playwright异步await用法
时间: 2025-01-25 20:00:54 浏览: 93
### 正确使用 `async` 和 `await` 在 Playwright 中
为了确保在 Playwright 中正确执行异步操作,应当定义一个异步函数并利用 `await` 关键字等待特定的操作完成。下面是一个完整的例子展示如何启动浏览器、创建新页面以及访问指定网址:
```python
from playwright.async_api import async_playwright
async def playwright_async_demo():
async with async_playwright() as p:
browser = await p.chromium.launch(channel="chrome")
page = await browser.new_page()
await page.goto("http://www.baidu.com")
import asyncio
asyncio.run(playwright_async_demo())
```
这段代码展示了基本的流程控制[^1]。
当涉及到更复杂的场景时,比如需要处理可能出现的各种异常情况,则可以在异步函数内部加入 try-except 结构来增强程序健壮性:
```python
from playwright.async_api import async_playwright, Error
async def safe_navigation(url):
async with async_playwright() as p:
try:
browser = await p.chromium.launch(channel="chrome")
page = await browser.new_page()
response = await page.goto(url)
if not response.ok:
raise Exception(f"Failed to load {url}, status code: {response.status}")
title = await page.title()
print(f"Navigated successfully! Page Title is '{title}'")
except Error as e:
print(f"An error occurred during navigation: {e}")
import asyncio
asyncio.run(safe_navigation('http://nonexistentwebsite.example'))
```
此版本不仅包含了基础功能还加入了错误捕捉机制以应对潜在的问题发生[^2][^3]。
对于某些情况下希望在一个已经打开的标签页内点击链接跳转而不关闭现有窗口的情况,可以通过定位到目标元素并通过模拟用户的交互行为实现这一点:
```python
from playwright.async_api import async_playwright
async def navigate_by_clicking_link(link_text):
async with async_playwright() as p:
browser = await p.chromium.launch(channel="chrome")
page = await browser.new_page()
# 假设我们正在百度首页
await page.goto("https://www.baidu.com/")
# 查找包含给定文本的超链接并单击它
link_element = await page.wait_for_selector(f'a:text("{link_text}")')
await link_element.click()
new_url = page.url
print(f'New URL after clicking the link: {new_url}')
import asyncio
asyncio.run(navigate_by_clicking_link('新闻')) # 使用实际存在的链接文字替换 '新闻'
```
上述实例说明了怎样通过Playwright 的异步接口,在保持当前浏览上下文的同时触发新的导航动作[^5]。
阅读全文
相关推荐


















