Playwright 是由 Microsoft 开发的一个开源自动化测试工具,专门用于进行 Web 应用程序的自动化测试。它最显著的优点是什么?是通过录制脚本的方式自动生成测试代码,大大缩短了编写自动化测试用例的时间!
安装起来非常方便,如果你已经有了Python和pip,那只需要两行命令。先安装Playwright:
pip install playwright
然后安装需要的浏览器驱动:
python -m playwright install
可以看到Playwright自动安装好了我们常用的各种浏览器驱动,包括Chrome,Webkit,Firefox等,这点上可比Selenium强太多了!用Selenium做自动化测试的时候最让我头疼的就是浏览器驱动的安装了,要自己手动查本机浏览器版本,手动去官网上下载驱动,再在代码中手动引用。。。Playwright一键配置就帮我们完成任务了!
然后我们就可以直接开始录制自动化测试脚本了!只需要一行命令:
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会给出这个元素的定位路径的提示。当我们输入文字,点击跳转的时候,脚本上都会出现对应的操作代码。 进行完一个基本的搜索操作之后生成的脚本代码如下:
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直接运行了,是不是很方便?