教程: 链接
官方文档:Installation | Playwright
中文文档: 在 Microsoft Edge 中使用 Playwright 自动执行和测试 - Microsoft Edge Development | Microsoft Learn
# 其他教程参考链接
https://blog.csdn.net/m0_51156601/article/details/126886040
https://blog.csdn.net/zz00008888/article/details/127950173
https://blog.csdn.net/qq_36991535/article/details/124781189
https://playwright.dev/python/docs/intro
# 定位方式
https://www.cnblogs.com/du-hong/p/17428687.html
https://developer.aliyun.com/article/1174359
新型自动化测试工具,功能强大,有如下优点:
- 内置浏览器驱动
- 支持移动端
- 支持异步
- 代码生成
1.安装
1.1正常安装
# 安装playwright
pip install playwright
# 安装驱动
playwright install
1.2离线安装
若是公司网络有限制,可以参考:离线安装
1.2.1安装驱动
如果你没有对应的驱动,运行命令会报错,提示特定地址的驱动没有找到
# 默认是chrome浏览器
(venv) D:\workspace\PAC_API_Test>playwright codegen -o script.py
[Error: Executable doesn't exist at D:\Users\xx\AppData\Local\ms-playwright\chromium-1067\chrome-win\chrome.exe
安装浏览器驱动
# 列出了不同浏览器的下载地址,譬如chrome列出三个url,依次尝试看是否可以下载
playwright install --dry-run
下载浏览器驱动后把文件解压(\chrome-win\chrome.exe),把文件配置到指定路径中(D:\Users\xx\AppData\Local\ms-playwright\chromium-1067)
2.录制脚本
可以录制浏览器中的操作并将代码自动生成出来,通过命令codegen实现。
playwright codegen --help
# -b用来指定浏览器,默认是chrome
# -o 录制的生成代码脚本,默认是python,--target指定语言
运行以下命令即可调用对应的浏览器(打开一个新窗口),同时会有一个记录对应语言的操作脚本(刚新打开的窗口的操作会被记录在上边-实时变化)
playwright codegen -o script.py -b firefox
生成的脚本(script.py)格式如下
from playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False)
# context 变量对应的是一个 BrowserContext 对象
context = browser.new_context()
page = context.new_page()
page.goto("https://www.baidu.com/")
page.locator("#kw").fill("dong'ji")
page.get_by_text("东极岛", exact=True).click()
page.get_by_role("button", name="百度一下").click()
page.get_by_role("link", name=" 资讯").click()
page.close()
# ---------------------
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
说明:这个 context 变量对应的是一个 BrowserContext 对象,BrowserContext 是一个类似隐身模式的独立上下文环境,其运行资源是单独隔离的,在做一些自动化测试过程中,每个测试用例我们都可以单独创建一个 BrowserContext 对象,这样可以保证每个测试用例之间互不干扰。
3.手动写代码
分为两种编写模式,一种是类似 Pyppetter 一样的异步模式,另一种是像 Selenium 一样的同步模式,我们可以根据实际需要选择使用不同的模式。
3.1同步模式
with sync_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
# 创建浏览器实例
# headless=True 是无窗口运行
browser = p.chromium.launch(headless=False)
# new_page()相当于新建了一个选项卡,返回的是一个 Page 对象,将其赋值为 page
page = browser.new_page()
# 调用 goto,就是加载某个页面
page.goto('https://www.baidu.com/')
# 截图
page.screenshot(path=f'screenshot-chrome.png')
print(page.title())
page.close()
browser.close()