自动化神器Playwright快速上手指南

这篇具有很好参考价值的文章主要介绍了自动化神器Playwright快速上手指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Playwright是由微软公司2020年初发布的新一代自动化测试工具,相较于目前最常用的Selenium,它仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作。作为针对 Python 语言纯自动化的工具,在回归测试中可更快的实现自动化。

1. 为什么选择Playwright

1.1 Playwright的优势

(1) Selenium需要通过WebDriver操作浏览器;Playwright通过开发者工具与浏览器交互,安装简洁,不需要安装各种Driver。

(2) Playwright几乎支持所有语言,且不依赖于各种Driver,通过调用内置浏览器所以启动速度更快。

(3) Selenium基于HTTP协议(单向通讯),Playwright基于Websocket(双向通讯)可自动获取浏览器实际情况。

(4) Playwright为自动等待。

  • 等待元素出现(定位元素时,自动等待30s,等待时间可以自定义,单位毫秒)
  • 等待事件发生

1.2 已知局限性

(1) Playwright不支持旧版Microsoft Edge或IE11。支持新的Microsoft Edge(在Chromium上);所以对浏览器版本有硬性要求的项目不适用。

(2) 需要SSL证书进行访问的网站可能无法录制,该过程需要单独定位编写。

(3) 移动端测试是通过桌面浏览器来模拟移动设备(相当于自带模拟器),无法控制真机。

2. Playwright使用

2.1 安装

(1)安装Playwright依赖库(Playwright支持Async\Await语法,故需要Python3.7+)

pip install playwright

(2)安装Chromium、Firefox、WebKit等浏览器的驱动文件(内置浏览器)

python -m playwright install

2.2 自动录制

(1)命令行键入 --help 看到所有可后接选项

python -m playwright codegen --help

(2)从起始页为http://xingzheai.cn开始录制

python -m playwright codegen https://xingzheai.cn/

(3)打开http://xingzheai.cn,用Chromium驱动,将结果保存为my.py的python文件

python -m playwright codegen --target python -o 'my.py' -b chromium https://xingzheai.cn/
  • -target:规定生成脚本的语言,有JS和Python两种,默认为Python
  • -b:指定浏览器驱动
  • -o:将录制的脚本保存到一个文件

2.3 定制化编写

(1)元素定位

  • 选择单个元素:querySelector(engine=body)
  • 选择多个元素:querySelectorAll(engine=body)
  • 选择单个元素,并且自动等待:waitForSelector(engine=body)
By的8种定位方式,实际为4种
  • id、name、tag name、class name(java和pythona将该4种都归为CSS)
  • xpath、link text、partial link text、css selector
W3C标准规定的webDriver协议为5种定位方式
  • CSS、Link text、Partial link text、Tag name、XPath
Playwright将选择器汇总为3种
  • CSS、XPATH(支持逻辑表达式和函数)、TEXT

(2)选择器规则

  • CSS:ID选择器、类选择器、元素选择器、属性选择器、通配选择器、层次选择器。
  • XPath:XML路径语言,通过“路径标识符”,导航XML文档的,在类XML种(HTML)也可以使用。
  • Text: 结构化内容(html,xml,json)使用模糊匹配(忽略大小写,忽略前后空格,搜索子字符串)及精确匹配、非结构化内容使用正则匹配。

(3)元素常用操作

  • 下拉选择框:selectOpion、value、labei、index
  • 文件上传:setInputFiles、单个文件、多个文件、拖放上传
  • 鼠标点击:click、dbclick
  • 鼠标拖动:down、up
  • 鼠标移动:move
  • 触摸屏幕:tag
  • 键盘按键:press
  • 截屏、录屏:screenshot、recordVideo

2.4 网络拦截(Mock接口),示例如下:

page = context.newPage()
def Whether_intercept() -> bool:
    return True  #进行拦截
# return False #不进行拦截

def handler(route:Route):
    print(route.request.url)
    #正常访问
    # route.continue_()
    #拒绝访问
    # route.abort("网络拦截")
    # 重定向到非目标地址
    route.fulfill(
        status=302,
        headers={
            'Location' : "https://xingzheai.cn/"
        }
    )
page.route(Whether_intercept,handler)

2.5 同步执行,示例如下:

#依次打开三个浏览器,前往行者官网,截图后退出。
from playwright import sync_playwright with sync_playwright() as p:
    for browser_type in [p.chromium, p.firefox, p.webkit]:
         # 指定为有头模式,Ture为无头模式
        browser = browser_type.launch(headless=False)
        page = browser.newPage()
        page.goto('https://xingzheai.cn/')
        # 等待页面加载完全后截图
        page.waitForSelector("text=智能内容审核")
        page.screenshot(path=f'example-{browser_type.name}.png')
        browser.close()

2.6 异步执行,示例如下:

#同时进行三个浏览器操作
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('https://xingzheai.cn/')
         await page.waitForSelector("text=智能内容审核")
         await page.screenshot(path=f'example-{browser_type.name}.png')
         await browser.close()
         asyncio.get_event_loop().run_until_complete(main())

2.7 Pytest结合,示例如下:

安装:pip install pytest-playwright

def test_playwright(page):
    page.goto("https://xingzheai.cn/")
    with page.expect_popup() as popup_info:         
    page.click('text="智能内容审核"')         
    assert "智能内容审核" == element.textContent()

2.8 移动端操作,示例如下:

目前支持模拟机型较少, 参照:仿真设备列表

from time import sleep
from playwright import sync_playwright  
with sync_playwright() as p:
    GalaxyS5 = p.devices['Galaxy S5']
    browser = p.chromium.launch(headless=False)
    context = browser.newContext(**GalaxyS5)
    page = context.newPage()
    page.goto('https://xingzheai.cn/')
    page.click('text="智能内容审核"')
    # 截图
    # page.screenshot(path='colosseum-GalaxyS5.png')
    sleep(10)
    browser.close()

3. 总结

Playwright作为新一代自动化测试工具,相较于Selenium不论是易用性,还是实用性都得到了全方位的提升。做到了简约而不简单,相信使用该工具可以帮助我们提升做自动化的工作效率。文章来源地址https://www.toymoban.com/news/detail-740575.html

到了这里,关于自动化神器Playwright快速上手指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【playwright】新一代自动化测试神器playwright+python系列课程22_playwright模拟鼠标操作_悬停_右击_双击

    有些元素,只有你鼠标移动到它那个位置上,他才会展开或者显示一些内容,这时候就要用到hover()操作了。 以个人设置这个下拉菜单,来看一下hover的使用。 项目实践代码 以双击关闭弹出的流程窗口为例,看一下dblclick()使用 项目实践代码 以弹出的右键菜单为例,看一下

    2024年01月18日
    浏览(41)
  • 微软出品自动化神器【Playwright+Java】系列(九)多线程、重定向、弹出新窗口、截图、新页面、录制、页面对象模式操作

    写在前面 关于 Playwright 系列的文章,真的很久没有写了,今天一个不小心官方 API 部分过完了,下面将为大家逐一演示,感兴趣的同学可以自行动手练习。 API部分 多线程 直白点说就是多线程下 Playwright 的使用,示例代码如下: 重定向到指定页面 跳转到指定页面,示例代码

    2024年01月20日
    浏览(38)
  • Python RPA 流程自动化快速上手

    RPA,全称为Robotic Process Automation,即机器人流程自动化。 我们可以利用RPA技术将工作中可重复的部分流程化,让机器替我们完成这一工作。 许多程序并不提供方便的接口,我们难以直接通过脚本来批量完成工作任务。 PyAutoGUl允许我们使用Python脚本来控制鼠标和键盘以自动与

    2024年02月13日
    浏览(47)
  • 【Linux】快速上手自动化构建工具make/makefile

    👀 樊梓慕: 个人主页  🎥 个人专栏: 《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C++》《Linux》 🌝 每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.什么是make / makefile 2.如何使用make / makefile (1)我们来看makefile如何写? (2)如何与

    2024年02月05日
    浏览(45)
  • playwright自动化上传附件

    自动设置上传头像 1. 首先保存本地一个文件,例如 aaa.php 2. 获取输入类型为 \\\"file\\\" 的按钮 3. 将本地保存的图片路径赋值 4. 点击上传按钮

    2024年02月07日
    浏览(45)
  • playwright自动化项目搭建

    关键技术: pylaywright测试库 pytest单元测试框架 pytest-playwright插件 非关键技术: pytest-html插件 pytest-rerunfailures插件 seldom 测试框架 实现功能: 元素定位与操作分离 失败自动截图并保存到HTML报告 失败重跑 可配置不同的浏览器执行 可配置 headless/headful  模式 实现参数化读取数

    2024年02月14日
    浏览(34)
  • 基于Playwright自动化测试部署方案

    基于playwright框架,搭建了自动化测试项目,在服务器上使用Docker起容器跑镜像,镜像内容基于playwright的官方镜像,并向其中移入了host文件,以便切换测试用例运行所在的环境(测试/线上环境)。 引入测试用例的管理后台,方便测试用例与测试报告的管理。管理后台中可以

    2024年02月13日
    浏览(46)
  • 最强自动化测试框架Playwright(9)- 下载文件

    对于页面下载的每个附件,都会发出 page.on(“download”) 事件。 下载开始后,将发出下载事件。下载完成后,下载路径将变为可用 所有这些附件都下载到一个临时文件夹中。可以使用事件中的下载对象获取下载 URL、文件系统路径和有效负载流。 关闭浏览器上下文时,将

    2024年02月13日
    浏览(54)
  • 最强自动化测试框架Playwright(20)- iframe

    一个页面可以附加一个或多个 Frame 对象。每个页面都有一个主框架,并且假定页面级交互(如)在主框架中运行。 click 使用 iframe 时,可以创建一个框架定位器,该定位器将进入 iframe 并允许选择该 iframe 中的元素。 上面代码,先定位frame,然后定位frame里的元素,并对元素

    2024年02月13日
    浏览(40)
  • 最强自动化测试框架Playwright(29)-文件选择对象

    FileChooser对象通过page.on(\\\"filechoose\\\")事件监听。 如下代码实现点击百度搜图按钮,上传文件进行搜索。 为文件选择器设置要上传的文件路径 file_chooser.set_files(files) file_chooser.set_files(files, **kwargs) 返回文件选择器关联的input元素 file_chooser.element 返回文件选择器是否接收多个文件

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包