前言
在本文中,我们将介绍如何使用 Playwright 这一现代化的浏览器自动化工具来启动浏览器,并深入了解其运行方式。Playwright 是一个功能强大的工具,可以帮助开发人员自动化测试、网页截图、信息提取等任务。它支持多种浏览器,包括 Chrome、Firefox 和 WebKit。
启动浏览器
上一篇文章中,我们安装了 playwright 和各个浏览器的测试版本,所以我们可以直接启动浏览器,代码如下:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False) # 启动 chromium 浏览器
page = browser.new_page() # 打开一个标签页
page.goto("https://www.baidu.com") # 打开百度地址
print(page.title()) # 打印当前页面title
browser.close() # 关闭浏览器对象
复制代码
打印结果如下:
注:playwright 默认是无头方式启动运行浏览器的,如果我们想要看到界面,需要查看浏览器界面,需要将 headless 设置为 False
异步运行
Playwright 支持 2 种运行方式:同步和异步。如果项目使用 asyncio,那我们应该使用 async API:
import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=False)
page = await browser.new_page()
await page.goto("https://www.baidu.com")
print(await page.title())
await browser.close()
asyncio.run(main())
复制代码
打印结果如下:
start stop 运行方式
除了 with 方式运行之外,我们还可以使用 start,stop 来运行。代码如下:
from playwright.sync_api import sync_playwright
playwright = sync_playwright().start()
browser = playwright.chromium.launch(headless=False)
page = browser.new_page()
page.goto("https://www.baidu.com/")
browser.close()
playwright.stop()
复制代码
等待
相对于 selenium,playwright 执行速度会更快,为了便于我们查看执行的过程,我们可以加上等待来减缓执行,但是与 selenium 不同,playwright 通过 slow_mo (单位是毫秒)减慢执行速度,它的作用范围是全局的,从启动浏览器到操作元素每个动作都会有等待间隔,方便在出现问题的时候看到页面操作情况。使用方法如下:
chromium.launch(headless=False, slow_mo=50)
复制代码
示例代码如下:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False, slow_mo=1000)
page = browser.new_page()
page.goto("https://www.baidu.com")
print(page.title())
page.fill('#kw', "theshy")
page.click('#su')
browser.close()
复制代码
注:与 selenium 不同,playwright 不再支持 time.sleep(),而是使用 page.wait_for_timeout()来实现等待,当我们调试时需要等待,即可使用该方法。
示例代码如下:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False, slow_mo=1000)
page = browser.new_page()
page.goto("https://www.baidu.com")
print(page.title())
# 等待5秒
page.wait_for_timeout(5000)
page.fill('#kw', "theshy")
page.click('#su')
# 等待3秒
page.wait_for_timeout(3000)
browser.close()
复制代码
运行结果如下:
页面截图如下下图
总结
本文主要介绍了一些 playwright 的简单使用,playwright 的使用与 selenium 有一些不同,我们需要注意不同点,比如 playwright 默认是无头模式运行以及等待的改变。下一篇文章我们将介绍 playwright 定位元素的方法。
评论