小言_互联网的博客

python+playwright-python微软自动化工具

483人阅读  评论(0)

本文转自"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

比如,我们依次使用三个浏览器内核打开浏览器,然后百度一下,接着对在搜索界面截图,最后关闭浏览器


  
  1. from time  import sleep
  2. from playwright  import sync_playwright
  3. # 注意:默认是无头模式
  4. with sync_playwright()  as p:
  5.      # 分别对应三个浏览器驱动
  6.      for browser_type  in [p.chromium, p.firefox, p.webkit]:
  7.          # 指定为有头模式,方便查看
  8.         browser = browser_type.launch(headless= False)
  9.         page = browser.newPage()
  10.         page.goto( 'http://baidu.com')
  11.          # 执行一次搜索操作
  12.         page.fill( "input[name=\"wd\"]""AirPython")
  13.          with page.expect_navigation():
  14.             page.press( "input[name=\"wd\"]""Enter")
  15.          # 等待页面加载完全
  16.         page.waitForSelector( "text=百度热榜")
  17.          # 截图
  18.         page.screenshot(path= f'example-{browser_type.name}.png')
  19.          # 休眠5s
  20.         sleep( 5)
  21.          # 关闭浏览器
  22.         browser.close()

需要指出的是,playwright-python 内置的 API 基本上囊括常见的自动化操作

 

异步

异步步的关键字为:async_playwright

结合 asyncio,我们同时执行上面的操作


  
  1. import asyncio
  2. from playwright  import async_playwright
  3. # 异步执行
  4. async  def main():
  5.      async  with async_playwright()  as p:
  6.          for browser_type  in [p.chromium, p.firefox, p.webkit]:
  7.              # 指定为有头模式,方便查看
  8.             browser =  await browser_type.launch(headless= False)
  9.             page =  await browser.newPage()
  10.              await page.goto( 'http://baidu.com')
  11.              # 执行一次搜索操作
  12.              await page.fill( "input[name=\"wd\"]""AirPython")
  13.              await page.press( "input[name=\"wd\"]""Enter")
  14.              # 等待页面加载完全
  15.              await page.waitForSelector( "text=百度热榜")
  16.              # 截图
  17.              await page.screenshot(path= f'example-{browser_type.name}.png')
  18.              await browser.close()
  19. asyncio.get_event_loop().run_until_complete(main())

事实上,Playwright 是一个跨语言的自动化框架,支持 Python、Java、JS 等

Playwright 相比传统的自动化框架 Selenium 来说,在 Context 上下文及 API 使用上,显得更简洁且强大

 


转载:https://blog.csdn.net/jiaweide123/article/details/110799492
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场