Playwright 是由 Microsoft 开发的一个开源自动化测试工具,专门用于进行 Web 应用程序的自动化测试。它最显著的优点是什么?是通过录制脚本的方式自动生成测试代码,大大缩短了编写自动化测试用例的时间!


安装起来非常方便,如果你已经有了Python和pip,那只需要两行命令。先安装Playwright:

 pip install playwright

然后安装需要的浏览器驱动:

python -m playwright install

可以看到Playwright自动安装好了我们常用的各种浏览器驱动,包括Chrome,Webkit,Firefox等,这点上可比Selenium强太多了!用Selenium做自动化测试的时候最让我头疼的就是浏览器驱动的安装了,要自己手动查本机浏览器版本,手动去官网上下载驱动,再在代码中手动引用。。。Playwright一键配置就帮我们完成任务了!

image.png


然后我们就可以直接开始录制自动化测试脚本了!只需要一行命令:

python -m playwright codegen

这个命令有很多可加的参数选项,我们可以通过加上--help来查看有哪些可选参数。常用的如下:

  • -o, --output <file name>:指定生成的脚本文件名称
  • --target <language>:指定生成的代码所用的编程语言种类,支持的语言种类有:java, python, javascript, csharp等等,默认使用python
  • --timeout: 设置各种操作的超时时长,默认是没有超时时长的
  • -b, --browser <browserType>:指定浏览器类型,默认为chromium

下面我们来个例子看看Playwright的基本使用:

python -m playwright codegen -b chromium https://www.baidu.com

playwright打开浏览器之后,脚本录制就已经开始了。我们把鼠标移动到元素上,会发现Playwright会给出这个元素的定位路径的提示。当我们输入文字,点击跳转的时候,脚本上都会出现对应的操作代码。 image.png 进行完一个基本的搜索操作之后生成的脚本代码如下:

from playwright.sync_api import Playwright, sync_playwright, expect


def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto("https://www.baidu.com/")
    page.locator("#kw").click()
    page.locator("#kw").fill("自动化测试")
    page.get_by_role("button", name="百度一下").click()
    with page.expect_popup() as page1_info:
        page.get_by_role("link", name="自动化测试 - 相关博客 - 开发者搜索").click()
    page1 = page1_info.value

    # ---------------------
    context.close()
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

我们把这个脚本保存好了就可以用Python直接运行了,是不是很方便?