selenium的挑战者 - playwright简析

简介

今年(2021年)微软开源了一个项目叫「playwright-python」,Playwright 是针对 Python 语言的纯自动化工具,它可以通过单个API自动执行 Chromium,Firefox 和 WebKit 浏览器,同时支持以无头模式、有头模式运行。

playwright官网

  1. 支持浏览器端的录制,生成自动化脚本,支持无头跑脚本

  2. 速度快,基本是selenium的好几倍,且支持浏览器异步运行

  3. 自动等待API,可拦截请求,随意mock

官方API

点击

搭建环境

  • 安装库 pip install playwright

  • 安装浏览器 python -m playwright install

录制脚本示例

命令行输入python -m playwright codegen,会自动弹出一个浏览器和代码文本框, 在浏览器输入www.baidu.com,然后输入ceshiyixia,结束录制,效果如图:

selenium的挑战者 - playwright简析_第1张图片

示例

模拟手机safari浏览器打开谷歌地图,定位到某个地点,然后截图

from playwright.sync_api import sync_playwright
import time

with sync_playwright() as p:
    iphone_11 = p.devices['iPhone 11 Pro']
    browser = p.webkit.launch(headless=False)
    context = browser.new_context(
        **iphone_11,
        locale='en-US',
        geolocation={ 'longitude': 12.492507, 'latitude': 41.889938 },
        permissions=['geolocation']
    )
    page = context.new_page()
    page.goto('https://maps.google.com')
    page.click('text="Your location"')
    time.sleep(5)
    page.screenshot(path='colosseum-iphone.png')
    browser.close()

其他

Headless 和 headful: Playwright支持所有平台和浏览器上使用Headless模式和Headful模式。Headful非常适合调试。Headless运行更快,也可以更方便的在CI/云平台上运行。headless默认开启,设置为false,即为 headful模式,可以看到自动化的过程。

对比selenium

一家外网对比文章

简单来说以下几方面playwright有点优势:

  • 执行速度 - playwright运行时可以通过设置Headless后台直接运行,不用展示过程

  • Actionability - playwright不需要在代码中做等待判断,例如等待下一个页面出现时再点击某个按钮,这在playwright中会自动判断. 而selenium在代码中几乎每个点击都需要手动加入判断,甚至加入延迟时间,延迟时间加多了的话,极大影响执行效率.

  • Selectors - 在playwright中可以直接通过页面文本字符来选择对应元素.

  • Multi-tab & frames

参考

https://www.cnblogs.com/fnng/p/14274960.html

https://www.cnblogs.com/fnng/p/14311181.html

https://www.linkedin.com/pulse/playwright-selenium-next-15-years-mark-percival

你可能感兴趣的:(python,测试)