Python自动化神器-Playwright

1、Playwright介绍

Playwright是一个强大的Python库,仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作,并同时支持以无头模式、有头模式运行。Playwright提供的自动化技术是绿色的、功能强大、可靠且快速,支持Linux、Mac以及Windows操作系统。

2、Playwright的安装

安装playwright库
pip install playwright

Python自动化神器-Playwright_第1张图片
注意:

1>安装Playwright依赖库,需要Python3.7+

2>安装浏览器驱动文件,安装Chromium、Firefox、WebKit等浏览器的驱动文件
python -m playwright install

Python自动化神器-Playwright_第2张图片

 

3、录制生成脚本

Playwright无需写一行代码,我们只需手动操作浏览器,它会录制我们的操作,然后自动生成代码脚本。

1>python -m playwright codegen

唤起浏览器,手动操作录制自动生成代码

Python自动化神器-Playwright_第3张图片

2>通过 python -m playwright codegen --help查看codegen的用法

Python自动化神器-Playwright_第4张图片

常用options含义:

  • -o:将录制的脚本保存到一个文件

  • --target:规定生成脚本的语言,有JS和Python两种,默认为Python

  • -b:指定浏览器驱动

python -m playwright codegen --target python -o my.py -b chromium https://www.baidu.com

命令行输入后会自动打开浏览器,然后可以看见在浏览器上的一举一动都会被自动翻译成代码

结束后自动关闭浏览器,保存生成的自动化脚本到py文件

4、此外,playwright还提供了同步和异步的API接口

同步

依次打开三个浏览器,前往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://baidu.com/')
    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://baidu.com/')
        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.google.com,然后执行定位并截图

from playwright import sync_playwright
with sync_playwright() as p:
iphone_11 = p.devices['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.google.com')
page.click('text="Your location"')
page.screenshot(path='colosseum-iphone.png')
browser.close()

总结:

playwright相比其他自动化测试工具的优势

1、支持所有浏览器的

  • 在Chromium,Firefox和WebKit上进行测试。

  • 跨平台的WebKit测试。

  • 测试手机。

  • 无报文头与有报文头。

2、拥有快速可靠的执行

  • 自动等待APIs。

  • 无超时自动化。

  • 与浏览器上下文保持并行。

  • 弹性元素选择器。

3、拥有强大的自动化功能

  • 多个域,页面和框架。

  • 强大的网络控制。

  • 现代网络功能。

  • 涵盖所有场景的能力。支持文件下载和上传,进程外iframe,原生输入事件,甚至是深色模式。

局限性:

  • 旧版Edge和IE11支持。Playwright不支持旧版Microsoft Edge或IE11(弃用通知)。支持新的Microsoft Edge(在Chromium上)。

  • Java语言绑定:Playwright API目前无法在Java或Ruby中使用。这是暂时的限制,因为Playwright旨在支持任何语言的绑定。

  • 在真实的移动设备上进行测试:Playwright使用桌面浏览器来模拟移动设备。

你可能感兴趣的:(爬虫,自动化,爬虫,python)