1、概述
微软开发,基于Devtools协议的浏览器自动化工具,支持浏览器Chrome、Edge、Firefox、WebKit(Safari 内核)。支持多种语言,Node.js、TypeScript/JavaScript、Python、.NET、Java。
2、使用
1、环境准备
安装库:pip install playwright
安装浏览器:playwright install
Playwright自动安装到系统用户目录,浏览器也会下载到这个目录,比如:
C:\Users\你的用户名\AppData\Local\ms-playwright\
playwright install会安装所有浏览器,若要安装指定浏览器,可使用如下命令:
python
# 只装 Chrome/Edge
playwright install chromium
# 只装火狐
playwright install firefox
# 只装 Safari 内核
playwright install webkit

2、playwright自动录制功能
在浏览器上的操作,会自动生成完整的Python、JS代码,直接复制就能用。
命令格式如下,
playwright codegen 网址,比如:playwright codegen https://www.baidu.com/
运行命令会出现2个窗口,一个是浏览器窗口,一个是Playwright Inspector窗口,
手动在浏览器窗口上,Playwright Inspector窗口自动生成代码。


3、语言切换
Playwright Inspector窗口支持自带语言切换功能,切换后已录制的代码会自动转换成新语言。


4、示例
1、打开网页
2、输入"NBA"
3、点击"百度一下"按钮
可以用自动录制功能生成代码,也需要F12打开浏览器调试窗口查看元素信息,手动调整代码,
也可以纯手动编码。
python
import time
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 = browser.new_page()
page.goto("https://www.baidu.com")
page.locator("#chat-textarea").click()
page.locator("#chat-textarea").fill("NBA")
page.get_by_role("button", name="百度一下").click()
# 延时为了看效果
time.sleep(10)
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
5、一些常用命令
页面导航
goto:直接跳转
reload:刷新
go_back:后退
go_foaward:前进
页面状态
page.url:获取当前页面url
page.title:获取当前页面的标题
page.content:获取完整的页面html内容
页面动作
page.set_viewport_size:设置页面的视口大小,用于模拟不同的设备屏幕,如桌面、平板、手机
page.screenshot:捕获当前页面的截图
page.evaluate:在页面上下文中执行一段JavaScript表达式并返回结果
page.wait_for_url:等待页面的url变为指定的值或满足特定模式,常用于验证重定向或表单提交后的页面跳转
page.wait_for_timeout:强制暂停指定毫秒数,仅应用于调试场景,在正式测试代码中,应避免使用,因为它会引入不必要的延迟和不稳定性。
元素定位
page.locator("css选择器")
page.get_by_text("文字"):通过文本内容进行元素定位
page.get_by_role("角色", name="名称")
page.get_by_placeholder("提示文字"):通过placeholder属性定位元素
page.get_by_title:通过title属性定位元素
page.get_by_alt_text:通过alt属性定位元素,通常是图像
page.locator("#id")
应该还有很多高级功能,暂时没研究那么多