playwright--简单使用

发布于:2024-06-13 ⋅ 阅读:(257) ⋅ 点赞:(0)

playwright的基本使用主要围绕着启动浏览器、导航至网页、操作页面元素、执行脚本和收集数据这几个核心步骤。以下是简单的使用流程,以同步API为例:

目录

1. 导入库并启动playwright

2. 创建新页面并导航

3. 操作页面元素

4. 异步操作与等待

5. 数据收集

6. 截图与视频录制

7. 清理与关闭

注意事项


1. 导入库并启动playwright

首先,我们需要从playwright.sync_api导入所需模块,并使用上下文管理器启动playwright。

from playwright.sync_api import sync_playwright
def usage_1():
    with sync_playwright() as p:
        # 启动Chromium浏览器实例
        browser = p.chromium.launch(headless=False)

headless参数是playwright一大特性:支持无头模式(headless mode),在没有用户界面的情况下运行测试,提高效率;同时也支持有头模式,便于调试和可视化测试过程。

我们需要有用户界面的话设置headless=False,不需要用户界面就设置headless=True

2. 创建新页面并导航

接下来,创建一个新的页面实例,并导航至指定URL。

        page = browser.new_page()
        page.goto("https://www.baidu.com")

3. 操作页面元素

可以通过CSS选择器、XPath或其它属性选择页面元素,然后进行点击、填写表单等操作。

        # 在搜索框中输入关键词
        page.fill("#kw", "python之playwright")

        # 点击“百度一下”按钮进行搜索
        page.click("#su")

4. 异步操作与等待

对于异步加载的内容,playwright提供了强大的等待机制,确保元素或条件满足后再执行下一步

        # 等待搜索结果出现,这里以第一个结果项作为等待条件
        page.wait_for_selector(".c-container")

page.wait_for_*系列方法是playwright官方自带的方法,和我们熟悉的sleep功能相似,但是playwright中有异步、协程的方法,直接用sleep可能会阻碍其运行,所以我们使用playwright官方自带的方法。

5. 数据收集

我们可以从页面中提取数据,比如获取文本内容、属性值等。

        # 获取第一个搜索结果的标题
        first_result_title = page.inner_text(".c-container .t")
        print(f"第一个搜索结果的标题是: {first_result_title}")

6. 截图与视频录制

Playwright还支持截图和录制页面操作的视频,这对于调试非常有用。

        # 保存当前页面为截图
        page.screenshot(path="baidu_search_result.png")

7. 清理与关闭

最后,记得清理资源,关闭浏览器实例。

        browser.close()

注意事项

  • 根据实际需要选择同步(sync_api)或异步(async_api)模式。
  • 使用page.wait_for_*系列方法来处理异步加载的页面元素,避免脚本因元素尚未加载完成而出错。
  • 适当利用page.context.storage_state(path='state.json')保存和恢复浏览器状态,以便复用登录信息等。
  • 考虑到资源管理,使用with语句确保浏览器资源被适时释放。

希望通过上述内容,可以帮助大家开始使用Playwright进行网页自动化操作


网站公告

今日签到

点亮在社区的每一天
去签到