首页 > 其他分享 >为什么选择Playwright?

为什么选择Playwright?

时间:2023-11-03 10:33:20浏览次数:23  
标签:为什么 Playwright const await 选择 context page browser

Playwright可以在所有浏览器中实现快速、可靠和强大的自动化测试。

这是我介绍Playwright自动化测试工具的第三篇幅,为什么选择Playwright?根据官方文档介绍,这里将介绍Playwright的特点,以便于帮助你快速的了解Playwright。

特点

  • 支持所有浏览器
  • 快速可靠的执行
  • 强大的自动化功能
  • 与你的工作流集成

注:

  1. 单讲特点比较干巴巴,所以,大部分特点我都配了例子。
  2. 官方文档默认例子为 JavaScript,这里也使用JavaScript。JavaScript其他还挺简单的。
  3. 评论区不用问Playwright的使用细节哈~!去官方文档找答案。

支持所有浏览器

  • 在Chromium, Firefox 和 WebKit上运行测试:Google Chrome和Microsoft Edge都是基于Chromium项目,Apple Safari基于WebKit,还有Mozilla 的Firefox。
const { chromium, webkit, firefox } = require('playwright');

(async () => {
  const browser = await chromium.launch();
  // const browser = await webkit.launch();
  // const browser = await firefox.launch();

  const page = await browser.newPage();
  await page.goto('http://www.baidu.com/');
  await page.screenshot({ path: `example.png` });
  await browser.close();
})();

扩展:
WebKit是Apple开源的浏览器引擎,Apple Safari就是基于WebKit开发。Chromium是开源浏览器项目,早期使用的也是WebKit内核,后来在WebKit的基础上fork了一个分支叫Blink,然后自己维护。

  • 测试移动端:通过设置驱动模式可以模拟移动浏览器的效果。
const { webkit, devices } = require('playwright');
const iPhone11 = devices['iPhone 11 Pro'];

(async () => {
  const browser = await webkit.launch();
  const context = await browser.newContext({
    ...iPhone11,
    locale: 'en-US',
    geolocation: { longitude: 12.492507, latitude: 41.889938 },
    permissions: ['geolocation']
  });
  const page = await context.newPage();
  await page.goto('https://m.baidu.com');
  await page.screenshot({ path: 'colosseum-iphone.png' });
  await browser.close();
})();
  • Headless 和 headful: Playwright支持所有平台和浏览器上使用Headless模式和Headful模式。Headful非常适合调试。Headless运行更快,也可以更方便的在CI/云平台上运行。
const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch({headless: false});
  // ...
})();

headless 默认开启,设置为false,即为 headful模式,可以看到自动化的过程。

快速可靠的执行

  • 自动等待: Playwright 可以自动等待元素,这将会提高自动化的稳定性,简化测试的编写。
  • 浏览器上下文并行:对具有浏览器上下文的多个并行、隔离的执行环境,重用单个浏览器实例。
const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch({headless: false, slowMo: 50 });
  const context = await browser.newContext();
  const page = await context.newPage();
  await page.goto('http://www.testpub.cn/login');
  await page.fill("#inputUsername", 'admin');
  await page.fill("#inputPassword", 'admin123456');
  await page.click('"Sign in"');
  await page.close();

  const page2 = await context.newPage();
  await page2.goto("http://www.testpub.cn/guest_manage/")
  await browser.close();
})();

我来解释一下,比如第一条用例执行了登录,第二条用例直接通过上下文创建一个新的页面去执行登录之后的功能,即保证了用例的相对独立性,又减少了用例的重复操作。

  • 有弹性的选择元素:Palywright可以依赖面向用户的字符串,如文本内容和可访问性标签来选择元素。这些字符串比与DOM结构紧密耦合的选择器更有弹性。
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>

例如上面的元素一看就不太好定位,用户到的是一个按钮,名字叫Sign in,那么可以用这个定位方式。

await page.click('"Sign in"');

强大的自动化能力

  • 支持多个域、页面和表单: Palywright是一个 进程外(out-of-process) 自动化驱动程序,它不受页内JavaScript执行范围的限制,可以自动处理多个页面的场景。
// Create two pages
const pageOne = await context.newPage();
const pageTwo = await context.newPage();

// Get pages of a brower context
const allPages = context.pages();
  • 强大的网络控制: Palywright引入上下文范围的网络拦截存根和模拟网络请求。
const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch({headless: false, slowMo: 50 });
  const context = await browser.newContext({ acceptDownloads: true });
  const page = await context.newPage();
  await page.goto('https://pypi.org/project/selenium/#files');
  const [ download ] = await Promise.all([
    page.waitForEvent('download'), 
    page.click('#files > table > tbody > tr:nth-child(2) > th > a')
  ]);
  const path = await download.path();
  console.log("path", path);
  await browser.close();
})();

在 HTTP 认证,文件下载、网络请求响应方面都有很强的控制能力。

  • 覆盖所有场景的功能:支持文件下载、上传,进程外表单,输入、点击,甚至是手机上流行的暗黑模式。
// Create context with dark mode
const context = await browser.newContext({
  colorScheme: 'dark' // or 'light'
});

与你的工作流程集成

  • 一行命令安装:运行npm i playwright 自动下载浏览器依赖,让你的团队快速上手。
  • 支持TypeScript:Playwright 附带内置的自动完成类型和其他收益。
  • 调试工具:通过 VS Code 完成自动化的调试。
  • 语言绑定:Playwright 支持多种编程语言,这个前面的文章有介绍。
  • 在CI上部署测试:你要可以使用Docker镜像,Playwright默认也是headless模式,你可以在任何环境上执行。

标签:为什么,Playwright,const,await,选择,context,page,browser
From: https://blog.51cto.com/fnngj/8162064

相关文章

  • playwright自动化项目搭建
    这是关于playwright系列介绍的最后一篇。搭建基于playwright的自动化项目。GitHub地址:https://github.com/defnngj/playwright-pro具备功能关键技术:pylaywright测试库pytest单元测试框架pytest-playwright插件非关键技术:pytest-html插件pytest-rerunfailures插件seldom测试框......
  • Vue树形单选选择器
    调用页面SuperviseTimerModal.vue代码如下:<template><div><j-modalcentered:title="title":width="width":visible="visible":destroyOnClose="true"switchFullscreen......
  • 0为什么你应该学习Go语言
    终于等到你!Go语言——让你用写Python代码的开发效率编写C语言代码。为什么互联网世界需要Go语言世界上已经有太多太多的编程语言了,为什么又出来一个Go语言?硬件限制:摩尔定律已然失效摩尔定律:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提......
  • 安科瑞无线测温装置的工作原理以及产品型号选择——安科瑞 李笑曼
    功能:ARTM-Pn无线测温装置:ARTM-Pn无线测温装置可以单独安装在高压柜、低压抽屉柜内,每台装置可以接收18个传感器的数据,传感器型号可选配ATE100、ATE200、ATE300。装置带有一路485接口,可将采集到的温度数据上传到监控中心。ARTM8温度巡检仪:ARTM系列温度巡检测控仪适用于一路或多路温......
  • 购物车 复选框和反选 全部选择案例
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>购物车复选框的选中反选的案例</title></head><body>All<inputclass="all"name="Checkbox"......
  • FX110:为什么学习外汇交易如此困难?
    对于大多数其他复杂技能,你可以在与你的能力水平或年龄组相匹配的环境中发展。最终,你可能会进步到足以对抗精英。但是,交易的情况并非如此。想象一下一个孩子与莱昂内尔·梅西一起踢足球,他甚至连触球的机会都可能美欧。他会感到沮丧、无助,最终放弃这项运动。能力的自我感知据一项著名......
  • 会议一体机单系统与双系统的区别在哪里?怎么选择
     随着科技的进步,会议一体机作为高效会议协作的工具,已经经历了不断的演进与升级变更,其中,单系统与双系统是两种常见的配置选择。今天小编就从不同的角度来讲解下两者的区别,以供大家参考。  单系统会议一体机通常具有更简单的设计,仅配备一个操作系统和应用程序,这种一体机通常更加可......
  • 【Mquant】2、量化平台的选择
    一、选择因素功能和工具集:量化平台应该提供丰富的功能和工具集,包括数据分析、策略回测、实时交易等。不同的平台可能有不同的特点和优势,可以根据自己的需求选择适合的平台。数据源和数据质量:量化交易离不开高质量的数据,因此选择一个平台时要考虑其数据源和数据质量。一些平......
  • P9779 [HUSTFC 2023] 不定项选择题
    不定项选择题思路啊,咱就是说这个题目描述是多么通俗易懂啊。我们可以知道,这道题是只有选或不选两种情况,就是问你有多少种情况,我们可以知道就是有\(2^n\)种情况,即(1<<n)种,但是题目中有一个情况不算,就是都不选的情况,所以我们最后要减\(1\)。即(1<<n)-1,这就是最后的公式。......
  • [20231023]为什么刷新缓存后输出记录顺序发生变化6.txt
    [20231023]为什么刷新缓存后输出记录顺序发生变化6.txt--//前几天做了单表刷新缓存后输出记录顺序发生变化的情况,测试2个表的情况时遇到一个奇怪的现象。--//我前面的测试18c,如果使用10046跟踪看不到我遇到的情况,我想使用strace跟踪,发现该机器配置使用asm,strace跟踪无法看到一--/......