本文转自"AirPython"
它支持主流的浏览器,包含:Chrome、Firefox、Safari、Microsoft Edge 等,同时支持以无头模式、有头模式运行
playwright-python 提供了同步、异步的 API,可以结合 Pytest 测试框架使用,并且支持浏览器端的自动化脚本录制
项目地址:https://github.com/microsoft/playwright-python
安装playwright-python,执行命令:pip install playwright
安装成功之后,执行命令:python -m playwright install,自动下载 Chromeium、Firefox、Safari(WebKit)浏览器驱动到本地
同步
同步的关键字为:sync_playwright
比如,我们依次使用三个浏览器内核打开浏览器,然后百度一下,接着对在搜索界面截图,最后关闭浏览器
-
from time
import sleep
-
-
from playwright
import sync_playwright
-
-
# 注意:默认是无头模式
-
-
with sync_playwright()
as p:
-
# 分别对应三个浏览器驱动
-
for browser_type
in [p.chromium, p.firefox, p.webkit]:
-
-
# 指定为有头模式,方便查看
-
browser = browser_type.launch(headless=
False)
-
page = browser.newPage()
-
page.goto(
'http://baidu.com')
-
-
# 执行一次搜索操作
-
page.fill(
"input[name=\"wd\"]",
"AirPython")
-
with page.expect_navigation():
-
page.press(
"input[name=\"wd\"]",
"Enter")
-
-
# 等待页面加载完全
-
page.waitForSelector(
"text=百度热榜")
-
-
# 截图
-
page.screenshot(path=
f'example-{browser_type.name}.png')
-
-
# 休眠5s
-
sleep(
5)
-
-
# 关闭浏览器
-
browser.close()
需要指出的是,playwright-python 内置的 API 基本上囊括常见的自动化操作
异步
异步步的关键字为:async_playwright
结合 asyncio,我们同时执行上面的操作
-
import asyncio
-
-
from playwright
import async_playwright
-
-
# 异步执行
-
async
def main():
-
async
with async_playwright()
as p:
-
for browser_type
in [p.chromium, p.firefox, p.webkit]:
-
# 指定为有头模式,方便查看
-
browser =
await browser_type.launch(headless=
False)
-
page =
await browser.newPage()
-
-
await page.goto(
'http://baidu.com')
-
-
# 执行一次搜索操作
-
await page.fill(
"input[name=\"wd\"]",
"AirPython")
-
await page.press(
"input[name=\"wd\"]",
"Enter")
-
-
# 等待页面加载完全
-
await page.waitForSelector(
"text=百度热榜")
-
-
# 截图
-
await page.screenshot(path=
f'example-{browser_type.name}.png')
-
-
await browser.close()
-
-
-
asyncio.get_event_loop().run_until_complete(main())
事实上,Playwright 是一个跨语言的自动化框架,支持 Python、Java、JS 等
Playwright 相比传统的自动化框架 Selenium 来说,在 Context 上下文及 API 使用上,显得更简洁且强大
转载:https://blog.csdn.net/jiaweide123/article/details/110799492
查看评论