Playwright Web UI自动化框架(微软出品)
1、微软开源 比selenium 更好用,无需配置各种浏览器环境,加载效率高,运行速度更快。支持有头、无头、以及兼容各个平台与多种语言。
2、代码演示
# 同步模式 from playwright.sync_api import sync_playwright # 初始化playwright playwright = sync_playwright().start() # 无头模式headless,打开chromium、firefox、webkit browser = playwright.chromium.launch(headless=False, args=["--start-maximized"]) # 窗口最大化no_viewport=True,自定义窗口viewport={'width': 1800, 'height': 1024} context = browser.new_context(no_viewport=True) # 打开一个新网页,前往 page = context.new_page() page.goto("https://www.baidu.com/") browser.close() playwright.stop()
3、关于无头模式,执行会出现cmd弹窗的问题。
开始安装的playwright 版本为1.33.0版本,通过cmd或者jenkins 执行代码都是调起N多个cmd弹窗。
然后卸载掉此版本的playwright以及之前下载的浏览器驱动,重新安装版本1.35.0且重新下载浏览器驱动,使用pytest执行就不会再出现cmd弹窗。pytest执行需要下载pytest-playwright库。
4、获取元素的文本
page.locator("[data-test=\"copiable-text-el\"]").inner_text()
5、获取剪切板内容
# 必须先有点击复制的操作 page.get_by_role("button", name="Copy").click() # 设置获取剪切板的权限 page.context.grant_permissions(["clipboard-read"]) # 获取剪切板内容 page.evaluate("navigator.clipboard.readText()") # 授予全部权限 page.context.clear_permissions()
6、处理表单填充、文本框输入
可以使用fill()方法在输入框中输入文本。例如
7、点击页面元素
可以使用click()方法单击页面上的元素。例如:
8、选择下拉列表中的选项
可以使用selectOption()方法从下拉列表中选择选项。例如:
9、模拟键盘输入
可以使用keyboard对象模拟键盘输入。例如:
10、模拟鼠标操作
可以使用mouse对象模拟鼠标操作。例如:
11、上传文件
可以使用set_input_files方法定位上传元素传入文件。例如:
12、截图操作
使用page.screenshot()方法可以对当前页面进行截图,例如:
也可以使用page.pdf()方法将页面转换为PDF格式,例如:
13、处理请求和响应
可以使用page.route()方法来拦截发出的请求,并进行相应的处理,例如:
也可以使用page.on('response')方法来拦截接收到的响应,并进行相应的处理,例如:
14、同步与异步
同步例子:
Playwright 默认使用异步操作方式。可以通过使用 await 关键字或 async with 语法来定义异步操作,或者使用 sync 关键字来定义同步操作。例如: