同步
下面示例代码:依次打开三个浏览器,前往baidu搜索,截图后退出。
from playwright import sync_playwright
with sync_playwright
as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = browser_type.launch
page = browser.newPage
page.goto
'https://***/'
page.screenshot
path=f'example-{browser_type.name}.png'
browser.close
异步
异步操作可结合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
page = await browser.newPage
await page.goto
'http://***/'
await page.screenshot
path=f'example-{browser_type.name}.png'
await browser.close
asyncio.get_event_loop
.run_until_complete
main
移动端
更厉害的是,playwright还可支持移动端的浏览器模拟。下面是文档提供的一段代码,模拟在给定地理位置上手机iphone 11 pro上的Safari浏览器,首先导航到maps.g***,然后执行定 位并截图。
from playwright import sync_playwright
with sync_playwright
as p:
iphone_11 = ***ices['iPhone 11 Pro']
browser = p.webkit.launch
headless=False
context = browser.newContext
**iphone_11,
locale='en-US',
geolocation={ 'longitude': 12.492507, 'latitude': 41.889938 },
permissions=['geolocation']
page = context.newPage
page.goto
'https://maps.g***'
page.click
'text="Your location"'
page.screenshot
path='colosseum-iphone.png'
browser.close
在Chromium,Firefox和WebKit上进行测试。Playwright拥有适用于所有现代浏览器的完整API覆盖,包括Google Chrome和Microsoft Edge(带有Chromium),Apple Safari(带有WebKit)和Mozilla Firefox。
跨平台的WebKit测试。使用Playwright,使用适用于Windows,Linux和macOS的WebKit构建,测试您的应用程序在Apple Safari中的行为。在本地和CI上进行测试。
自动等待APIs。Playwright交互会自动等待直到元素准备就绪。这样可以提高可靠性并简化测试编写流程。
无超时自动化。Playwright会接收浏览器信号,例如网络请求,页面导航和页面加载事件,以导致睡眠中断的烦恼。
多个域,页面和框架。Playwright是一种进程外自动化驱动程序,不受页面内JavaScript执行范围的限制,并且可以自动执行具有多个页面的方案。
强大的网络控制。Playwright引入上下文范围的网络拦截以便进行终止或者模拟网络请求。
现代网络功能。Playwright通过插入阴的选择器,地理位置,权限,Web Worker和其他现代Web API支持Web组件。涵盖所有场景的能力。