Playwright上手学习1

简介

Playwright是微软开源的一款自动化测试工具,支持Python、Java、Node.js、.NET,目前最新版本的为1.14,暂时没有中文文档。可快速实现在主流的浏览器上的自动化测试。

优势

浏览器支持

  1. Playwright有全面的API,支持现主流的浏览器,Chrome、Microsoft Edge (Chromium)、Apple Safari (WebKit)和Firefox。无需额外下载浏览器驱动,在下载Playwright库时就已自动下载浏览器驱动文件。
  2. 跨平台WebKit测试:支持在Windows、Linux、MacOS上进行通过WebKit实现Apple Safari测试
  3. Playwright支持通过设置手机型号进行移动端Web browsers测试
  4. 支持无头、有头浏览器模式运行

快速稳定的执行

  1. Playwright提供自动等待API,自动等待元素出现(自动等待30s,等待时间可以自定义,单位毫秒),自动等待时间发送
  2. 自动识别浏览器超时。Playwright可以接收浏览器信号,如网络请求、页面导航和页面加载事件,以解决设置不稳定的睡眠时间的需要
  3. 快速隔离浏览器环境:Playwright支持上一个执行完成的浏览器实例作为下一个执行的开始
  4. 更加灵活的元素定位:Playwright支持面向用户的字符串定位,如通过文本内容和可访问标签来定位元素。

强大的自动化功能

  1. 支持多个域、页面和表单。 Palywright是一个 进程外(out-of-process) 自动化驱动程序,它不受页内JavaScript执行范围的限制,可以自动处理多个页面的场景
  2. 强大的网络控制。Playwright引入上下文的网络监听来阻断或mock网络请求
  3. Playwright支持文件上传下载、切换iframes、原生输入事件,还可以切换浏览器的模式(Light or Dark mode)

安装上手使用(Python)

  • 在Python环境安装,建议版本3.7以上
 pip install playwright
  • 安装浏览器的驱动文件
 python -m playwright install

完成以上两个步骤即可开始正式试用Playwright

Playwright支持两种形式的API:synchronous(同步)和 asynchronous(异步),因为Playwright默认是用的无头模式,为了看到效果,这里修改了默认参数,改为了有头模式。下面分别这两种调用方式跑同一个示例测试流程:

- 同步执行:

 # 打开谷歌浏览器,输入‘http://www.baidu.com’并跳转,等待页面加载完毕,答应当前页面的的title,关闭浏览器
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("http://www.baidu.com")
    print(page.title())
    browser.close()

- 异步执行:

# 打开谷歌浏览器,输入‘http://www.baidu.com’并跳转,等待页面加载完毕,答应当前页面的的title,关闭浏览器
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("http://www.baidu.com")
        print(await page.title())
        await browser.close()

asyncio.run(main())

Playwright支持屏幕截图,无头有头模式都可截图:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("http://www.baidu.com")
    # 浏览器截图,无头模式也可截图。默认为当前执行路径
    page.screenshot(path='example.png')
    browser.close()

Playwright支持脚本录制:

通过python命令行的方式可以进行脚本录制

python -m playwright codegen

输入 --help查看相关使用方法
在这里插入图片描述
可以看到其功能是很齐全,这里只是简单介绍使用,后续会单独重点对这部分进行讲解。

Playwright可以与Pytest结合使用: 使用第三方库pytest-playwright

Playwright可与Pyinstaller结合使用,完全兼容。将浏览器与执行文件捆绑在一起将生成更大的二进制文件。 建议只捆绑需要使用的浏览器

已知问题

使用time.sleep()会导致超时问题:
建议使用page.wait_for_timeout(毫秒)替换time module的time.sleep(秒),会很好改善超时问题。因为Playwright内部是依赖于异步操作,而当使用time.sleep(秒)时,无法正确处理这种情况。

系统要求
Playwright 需要python3.7以上,适用在三个平台(Windows,macOS,Linux)上的三种浏览器:Chromium,Firefox , WebKit

Windows:适用于 Windows 和适用于 Linux 的 Windows 子系统 (WSL)
macOS:需要 10.14 (Mojave) 或更高版本
Linux:取决于使用的Linux发行版本,可能会需要安装额外的依赖来运行浏览器。目前仅Ubuntu 18.04和Ubuntu 20.04 完全兼容支持。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值