简介
Playwright是微软开源的一个UI自动化测试工具。添加了默认等待时间增加脚本稳定性,并提供录制、网络请求支持、自定义的定位器、自带调试器等新特性。
优势
(1)支持同步和异步
(2)安装简单,不需要手动下载浏览器驱动
(3)新增了文字定位元素,同时也兼容支持传统的css和xpath定位
(4)支持无头浏览器模式
(5)通过录制功能自动生成代码,将生成的代码进行简单的修改就可以实现业务自动化
1.安装
环境要求:
- liunx 系统版本:官方仅支持 Ubuntu 18.04 和 Ubuntu 20.04
- windows 系统版本:官方推荐 10.14 以上
- Python 版本:3.7以上,推荐使用3.8或者3.10版本的Python
在Python中要使用Playwright直接用pip命令安装即可,pip命令如下:
pip install --upgrade pip
pip install playwright
playwright install
这些命令下载 Playwright 包并为 Chromium、Firefox 和 WebKit 安装浏览器二进制文件。要修改此行为,请参阅安装参数。
2.编写第1个脚本
安装完成以后,便可以在Python脚本中通过import语句导入Playwright进行自动化程序的编写了。Playwright支持启动3种浏览器,分别为:chromium、firefox和webkit。读者可根据自身喜好进行选择。接下来,笔者演示编写一段简单的代码实现控制chromium浏览器并打开百度首页,然后获取其页面源码中的title属性值打印在python控制台。示例代码如下:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://www.baidu.com/")
print(page.title())
browser.close()
运行代码后输出结果如图1所示。
图1
需要注意的是,运行此段代码时,并没有弹出浏览器的界面就直接输出了内容,这是因为默认情况下,Playwright 以无头模式运行浏览器。要查看浏览器 UI,需要在启动浏览器时传递 headless=False 参数,如下例代码所示:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False, slow_mo=50)
page = browser.new_page()
page.goto("https://www.baidu.com/")
print(page.title())
browser.close()
再次运行代码就会弹出浏览器窗口,如图2所示。
图2
Playwright 支持同步和异步两种方式运行代码,如果我们的项目中有用到 asyncio 库,可通过以下示例实现异步执行。
import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=False, slow_mo=50)
page = await browser.new_page()
await page.goto("https://www.baidu.com/")
print(await page.title())
await browser.close()
asyncio.run(main())
3.录制
playwright 相对于 selenium 来说,最大的一个亮点就是可以通过录制功能自动生成代码,不需要手动编写一句代码就能实现完整的自动化操作流程。这里笔者以演示一个自动打开百度首页,然后在百度搜索框里面输入一个关键词并点击搜索按钮的流程,步骤如下:
步骤1:在 cmd 命令行中输入命令,格式为:playwright codegen 目标网站网址,笔者这里输入的是:playwright codegen https://www.baidu.com 如图3所示。
图3
步骤2:敲下回车键执行,此时会弹出浏览器窗口和一个代码录制窗口,如图4所示。
图4
步骤3:接下来,在百度搜索框中输入一个关键词,并点击搜索按钮,此时在右边的代码录制窗口里面就会自动生成整个搜索动作的代码,如图5所示。
图5
步骤4:点击代码录制窗口左上角红色字体的 Record 按钮可停止录制或者暂停/重新打开录制。如图6所示。
图6
步骤5:全选复制生成好的代码,粘贴到新建的python文件中,直接运行即可实现录制好的动作效果。
内容未完,2022-06-23 日会继续更新