Playwright是由微软公司2020年初发布的新一代自动化测试工具,相较于目前最常用的 Selenium,它仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作,并同时支持以无头模式、有头模式运行。

官网地址:https://playwright.dev/docs/why-playwright/
GitHub:https://github.com/microsoft/playwright

1、Playwright使用

1.1 安装

快捷键Win+R,打开命令提示符窗口,输入以下命令行

(1) 安装 playwright-python 依赖库 (Playwright支持Async\Await语法,故需要Python3.7+)
pip install playwright

安装成功截图:

可以在https://pypi.org/project/playwright/查看它的依赖版本信息。

(2) 第 2 步,安装Chromium、Firefox、WebKit等浏览器的驱动文件(内置浏览器)
python -m playwright install

安装成功截图:

1.2 了解

使用Playwright无需写代码,只需手动操作浏览器,Playwright会录制我们的操作,然后自动生成代码脚本。

python -m playwright codegen 录制脚本

(1)命令行键入 –help 看到所有可后接选项
python -m playwright codegen --help
(2) 指令介绍
  • -o 生成自动化脚本的目录
  • –target 脚本语言,包含 JS 和 Python,分别对应值为:python 和 javascript
  • -b 指定浏览器驱动

1.3 录制

在baidu.com搜索,用chromium驱动,将结果保存为test.py的python文件

# 我们通过下面命令打开 Chrome 浏览器开始录制脚本
# 指定生成语言为:Python(默认Python,可选)
# 保存的文件名:test.py(可选)
# 浏览器驱动:chromium(默认webkit,可选)
# 最后跟着要打开的目标网站(默认仅仅是打开浏览器,可选)
python -m playwright codegen --target python -o test.py -b chromium https://www.baidu.com

命令行输入后会自动打开浏览器,然后可以看见在浏览器上的一举一动都会被自动翻译成代码,如下所示:

搜索“自动化测试”,点击Enter键,点击搜索出的“自动化测试-百度百科”,打开百度百科页面后,选择“自动化测试”标题,录制出如下脚本:

from playwright.sync_api import sync_playwright

def run(playwright):
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()

    # Open new page
    page = context.new_page()

    # Go to https://www.baidu.com/
    page.goto("https://www.baidu.com/")

    # Click input[name="wd"]
    page.click("input[name=\"wd\"]")

    # Fill input[name="wd"]
    page.fill("input[name=\"wd\"]", "自动化测试")

    # Press Enter
    page.press("input[name=\"wd\"]", "Enter")
    # assert page.url == "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95&fenlei=256&rsv_pq=88dcbfd8000550eb&rsv_t=d783NUQ8df%2BNjkvSoOoFTFDteq6CMWv5vFl0hhLwCVm30D%2Bv2VS51wdwYiU&rqlang=cn&rsv_dl=tb&rsv_enter=1&rsv_sug3=16&rsv_sug1=14&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=8&rsv_sug4=5241"

    # Click text=自动化测试 - 百度百科
    with page.expect_popup() as popup_info:
        page.click("text=自动化测试 - 百度百科")
    page1 = popup_info.value
    # assert page.url == "https://baike.baidu.com/item/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/9815698?fr=aladdin"

    # Click h1:has-text("自动化测试")
    page1.click("h1:has-text(\"自动化测试\")")

    # Close page
    page1.close()

    # Close page
    page.close()

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

with sync_playwright() as playwright:
    run(playwright)
作者:Jeebiz  创建时间:2023-02-16 23:27
最后编辑:Jeebiz  更新时间:2024-03-12 09:16