前言
在本文中,我们将介绍如何使用 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 asynciofrom 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 定位元素的方法。
评论