Playwright 是一个强大的自动化框架,它允许你使用 Python(以及其他语言如 JavaScript 和 Java)来控制 Chromium、Firefox 和 WebKit 浏览器,执行端到端测试、网页抓取任务以及任何需要与网页交互的自动化工作。以下是一个简单的 Playwright 自动化框架使用 Python 的教程概览:
安装 Playwright
首先,确保你有 Python 环境(需要Python3.7或更新的版本),并通过pip安装Playwright库及其浏览器依赖项:
Bash
pip install playwright
安装浏览器
playwright install
这将会自动下载并安装受支持的浏览器二进制文件。(无需自己手动安装浏览器了)
和selenium不同,我们不再是安装对应的浏览器驱动,所以不需要再头疼浏览器驱动版本的问题了
运行命令后,会安装chromium,firefox 和 webkit(Safari)浏览器,供playwright使用。
导入库并启动浏览器
在你的Python脚本中,首先导入Playwright库并启动一个浏览器实例:
Python
from playwright.sync_api import sync_playwright
def run(playwright):
browser = playwright.chromium.launch()
page = browser.new_page()
page.goto("https://www.example.com")
print(page.title())
browser.close()
with sync_playwright() as playwright:
run(playwright)
定位元素
Playwright 提供了多种方法来定位页面元素,包括CSS选择器、XPath等:
Python
element = page.query_selector("input[name='q']")
模拟用户操作
你可以模拟点击、填写表单、按键等操作:
Python
element.fill("Playwright tutorial")
element.press("Enter")
页面导航与等待
控制页面跳转,并在操作间添加适当的等待时间以确保页面加载完成:
Python
page.goto("https://duckduckgo.com")
page.wait_for_load_state("networkidle")
处理弹窗与对话框
你可以监听和操作alert、confirm等对话框:
Python
page.on("dialog", lambda dialog: dialog.accept())
截图功能
轻松获取页面截图:
Python
page.screenshot(path="screenshot.png")
截图选项
page.screenshot()
方法接受一些选项来定制截图行为,包括:
path
(可选): 图片保存的路径。如果不提供,则返回截图的字节流。full_page
(布尔值,默认为False
): 如果设为True
,则截取整个页面内容,即使内容超出了视口范围。clip
(字典): 指定截图区域,格式为{x: int, y: int, width: int, height: int}
。omit_background
(布尔值,默认为False
): 如果设为True
,则背景透明。timeout
(可选): 超时时间(以毫秒为单位)。quality
(整数,仅适用于 JPEG 格式): 图片质量,范围从 0 到 100。type
(字符串,默认为 "png"): 图片格式,可以是 "jpeg" 或 "png"。
根据你的具体需求调整这些选项。
异步操作
Playwright 同时支持异步操作,这对于性能敏感的应用特别有用。只需改用async_playwright
和异步语法即可。
结束语
这只是Playwright功能的冰山一角。更高级的功能包括跨浏览器测试、处理iframe、网络请求拦截与修改、多页面管理、复杂用户交互模拟等等。官方文档是学习的最佳资源,它详细介绍了所有API和特性,并提供了丰富的示例代码。记得查看Playwright的官方文档以获得最新和最全面的信息。