Playwright自动化测试工具

教程链接

官方文档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()