Node.js的下一代浏览器和移动自动化测试框架-WebdriverIO

news2024/11/21 1:34:20

在现代软件开发中,自动化测试已成为保障软件质量的关键环节。而在众多测试框架中,WebdriverIO凭借其强大的功能和简洁的语法,成为Node.js生态中备受瞩目的浏览器和移动自动化测试框架。那么,WebdriverIO究竟有哪些独特之处,它如何助力开发者实现高效的自动化测试?

什么使WebdriverIO脱颖而出,成为下一代浏览器和移动自动化测试的首选?它有哪些核心功能和优势?

1、前言

web自动化测试工具Selenium支持多种语言,如Python、Java、Ruby、JavaScript等,大多数测试人员使用最多的语言就是Python、Java了,并且很多技术社区与网上的学习资料查找起来很方便,很容易上手。但对于其他语言,比如JavaScript,相对来说资源就少很多了,针对JavaScript本篇将介绍一款在Node.js环境下的web与移动自动化测试框架 - WebdriverIO。

2、简介

WebdriverIO是一个测试自动化框架,用于e2e以及浏览器中的单元和组件测试,它允许你运行基于WebDriver和WebDriver BiDi以及Appium自动化技术的测试。为BDD/TDD测试框架提供支持,并将使用Sauce Labs、BrowserStack、TestingBot或LambdaTest在本地或云端运行测试。

WebdriverIO是一个先进的自动化框架,专为现代网络和移动应用的自动化而设计。它简化了与应用的交互,并提供了一系列插件,帮助你构建可扩展、健壮且稳定的测试套件。

功能特点:

  • 可扩展:添加助手函数或更复杂的命令集和组合。

  • 兼容性:WebdriverIO可以在WebDriver协议上运行以进行真正的跨浏览器测试,也可以在Chrome DevTools协议上运行,以使用Puppeter实现基于Chrome的自动化。

  • 功能性:各种内置和社区插件允许你轻松集成和扩展设置,以满足你的需求。

你可以使用WebdriverIO进行自动化:

  • 用React、Vue、Angular、Svelte或其他前端框架编写的web应用程序。

  • 在模拟器或真实设备上运行的混合或本机移动应用程序。

  • 本机桌面应用程序(例如,使用Electron.js编写)。

  • 在浏览器中对web组件进行单元或组件测试。

官方网址:

https://webdriver.io/

3、安装

代码库包含了WebdriverIO项目的一些核心包。WebdriverIO社区整理了许多精选资源。

以下列举比较典型的代码库。

1、核心包:

webdriver - W3C WebDriver和Mobile JSONWire协议的Node.js绑定实现。

github地址:

https://github.com/webdriverio/webdriverio/tree/main/packages/webdriver

webdriverio - Node.js的下一代浏览器和移动自动化测试框架。

github地址:

https://github.com/webdriverio/webdriverio/tree/main/packages/webdriverio

@wdio/cli - WebdriverIO testrunner命令行界面。

github地址:

https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-cli

2、报告包:

@wdio/allure-reporter - 用于创建allure测试报告的WebdriverIO报告插件。

github地址:

https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-allure-reporter

@wdio/junit-reporter - 以XML格式创建测试结果的WebdriverIO报告插件。

github地址:

https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-junit-reporter

3、服务包:

@wdio/appium-service - 用于启动和停止Appium服务器的WebdriverIO服务。

github地址:

https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-appium-service

@wdio/lighthouse-service - WebdriverIO服务,集成了Google Lighthouse命令以将其用于自动化测试。

github地址:

https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-lighthouse-service

@wdio/firefox-profile-service - WebdriverIO服务,允许你在wdio.conf.js中定义Firefox配置文件。

github地址:

https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-firefox-profile-service

4、框架包:

@wdio/cucumber-framework - cucumber测试框架适配器。

github地址:

https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-cucumber-framework

@wdio/jasmine-framework - jasmine测试框架适配器。

github地址:

https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-jasmine-framework

@wdio/mocha-framework - mocha测试框架适配器。

github地址:

https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-mocha-framework

4、快速上手

安装核心包webdriverio

此软件包提供了一个易于管理的API和大量基于WebDriver规范的语法。你可以将 WebdriverIO 作为独立软件包使用,或通过@wdio/cli在测试运行器中使用。WebdriverIO允许你使用WebDriver本地运行测试,也可以通过像Sauce Labs这样的云提供商使用远程用户代理进行测试。

npm install webdriverio

默认情况下,WebdriverIO使用Puppeteer自动化浏览器,如Chrome、Firefox或Chromium Edge。

官方示例:启动一个Chrome浏览器,并获取页面的标题。

import { remote } from 'webdriverio'

const browser = await remote({
    capabilities: { browserName: 'chrome' }
})

await browser.navigateTo('https://www.google.com/ncr')

const searchInput = await browser.$('#lst-ib')
await searchInput.setValue('WebdriverIO')

const searchBtn = await browser.$('input[value="Google Search"]')
await searchBtn.click()

console.log(await browser.getTitle()) // outputs "WebdriverIO - Google Search"

await browser.deleteSession()

 

  • WebdriverIO的核心功能

    • 观点:WebdriverIO是一款基于Node.js的开放源代码测试框架,支持多种浏览器和移动设备测试。其核心功能包括与Selenium的无缝集成、强大的插件系统和丰富的API。
const { remote } = require('webdriverio');
(async () => {
    const browser = await remote({
        capabilities: { browserName: 'chrome' }
    });
    await browser.url('https://example.com');
    const title = await browser.getTitle();
    console.log('Title:', title);
    await browser.deleteSession();
})();
  • 与Selenium的无缝集成

    • 观点:WebdriverIO与Selenium无缝集成,利用Selenium WebDriver协议进行操作,确保兼容性和稳定性,同时提供更简洁的API和更高效的测试执行。
    • 案例:通过WebdriverIO与Selenium Grid的集成,进行分布式测试,提高测试效率和覆盖率。
  • 强大的插件系统

    • 观点:WebdriverIO拥有丰富的插件系统,支持各种测试工具和框架,如Mocha、Jasmine、Cucumber等,极大地扩展了其功能和应用场景。
    • 案例:在WebdriverIO中使用Mocha进行行为驱动开发(BDD)测试:
describe('My Google Search', () => {
    it('should open google and search', async () => {
        await browser.url('https://www.google.com');
        const input = await $('[name="q"]');
        await input.setValue('WebdriverIO');
        await browser.keys('Enter');
        await expect(browser).toHaveTitleContaining('WebdriverIO');
    });
});

随着前端和移动应用开发的快速发展,自动化测试的需求也在不断增加。WebdriverIO作为一款新兴的测试框架,以其强大的功能和灵活性,迅速赢得了开发者的青睐。无论是在企业项目还是开源社区,WebdriverIO的应用场景和影响力都在不断扩大,推动着自动化测试技术的进步。

WebdriverIO作为Node.js生态中的下一代自动化测试框架,以其强大的功能和灵活性,为开发者提供了高效的测试解决方案。通过掌握WebdriverIO,你可以轻松实现浏览器和移动设备的自动化测试,提升软件质量和开发效率。

拥抱WebdriverIO,让自动化测试变得更简单、更高效,为你的开发工作注入新的动力。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1978747.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Substance Painter材质制作原理

21 材质制作原理_哔哩哔哩_bilibili 颜色,纹理,高光 木头的制作 玻璃的制作 玻璃要给一定的金属度

指标一致化处理

什么是数据指标 数据指标有别于传统意义上的统计指标,它是通过对数据进行分析得到的一个汇总结果,是将业务单元精分和量化后的度量值,使得业务目标可描述、可度量、可拆解。 数据指标有哪些类型 极大型:期望取值越大越好; 极小…

战略项目与可以帮助战略的项目

在公司内,如果没有机会做战略项目,那么就尽可能让自己的项目产生一些可以被战略项目使用的成果,最好是可以被多个战略项目使用的成果。 或者,将自己的项目和战略项目融合。 比如,一家生产面包的企业,你是负…

用PyTorch 从零开始构建 BitNet 1.58bit

我们手动实现BitNet的编写,并进行的一系列小实验证实,看看1.58bit 模型是否与全精度的大型语言模型相媲美! 什么是量化以及为什么需要它? 量化是用更少的比特数表示浮点数的过程。当两个数字使用不同的比特数进行量化时&#xf…

一篇教会你PXE高效批量网络装机及kickstart无人值守安装

目录 搭建PXE的前提 搭建PEX的过程 如何构建PXE服务器 搭建本地yum源 搭建apache 创建软链接将本地yum源到apache页面下 搭建dhcp服务 dhcp配置文件如下 使用system-config-kickstart生成ks.cfg文件 ,.cfg配置文件如下 搭建TFTP服务 搭建完成后测试 搭建…

跟李沐学AI:NiN网络中的网络

NiN块 一个卷积层后跟着两个全连接层(实际为核窗口大小为1x1的卷积层)。卷积层步幅为1,无填充,输出形状与卷积层输出形状相同,起到全连接层的作用。 NiN架构 无全连接层,交替使用NiN块和步幅为2的最大池化…

【C++标准模版库】list的介绍及使用

list 一.list的介绍二.list的使用1.list 构造函数2.list 空间大小3.list 增删查改4.list 迭代器的使用1.正向迭代器2.反向迭代器 5.list 其他成员函数 三.vector与list关于sort性能的比较 一.list的介绍 C中的list标准模板库(STL)是C标准库中的一个重要组…

Linux文件管理和IO重定向知识总结

目录 一,文件管理 Linux的目录结构是一个树状结构: 文件的分类: 操作文件的常用命令: 文件元数据和节点和inode表结构: 特点: 创建文件: 查看文件inode号: cp和inode&#x…

揭秘Matplotlib等高线图:让数据‘高山流水‘间,笑点与深度并存!

1. 引言 在这个数据如山的时代,你是不是也曾在茫茫数海中迷失方向,渴望找到那片隐藏的“数据绿洲”?别怕,今天咱们就来聊聊Matplotlib这位绘图界的魔术师,特别是它那令人叹为观止的等高线图技能。想象一下&#xff0c…

领域模型(Domain Model)

前言 软件的核心是其为用户解决领域相关的问题的能力。所有其他特性,不管有多么重要,都要服务于这个基本目的。当领域很复杂时,这是一项艰巨的任务,要求高水平技术人员的共同努力。开发人员必须钻研领域以获取业务知识。他们必须…

拉刀基础知识——拉刀的种类

如前面所说:近期要围绕拉削和拉刀这个话题,分享一些相关的内容,从最基础的知识开始,为此还专门买了本旧书——《拉刀设计》入门学习。废话不多说,直接开始。 拉刀最早由冲头演变而来,用于加工方孔&#xf…

【Web】TFCCTF 2024 部分题解

目录 GREETINGS SURFING SAFE_CONTENT FLASK DESTROYER GREETINGS 打express的SSTI GitHub - TheWation/NodeJsSSTI: Express app with Pug templates demonstrating SSTI vulnerability and secure implementation for educational purposes. payload: /result?user…

历史标签如何时间迁移?

本文解析的论文是: Lin, C.; Du, P.; Samat, A.; Li, E.; Wang, X.; Xia, J. Automatic Updating of Land Cover Maps in Rapidly Urbanizing Regions by Relational Knowledge Transferring from GlobeLand30. Remote Sens. 2019, 11, 1397. https://doi.org/10.33…

一刷代码随想录(动态规划2)

62.不同路径 题意: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少…

我的面包多

我的面包多主页:https://mbd.pub/o/author-bGubnGpq 欢迎咨询。

JavaSE面试篇章——一文干破Java集合

文章目录 Java集合——一文干破集合一、集合的理解和好处1.1 数组1.2 集合 二、集合的框架体系三、Collection接口和常用方法3.1 Collection接口实现类的特点3.2 Collection接口遍历元素方式1-使用Iterator(迭代器)3.2.1 基本介绍3.2.2 迭代器的执行原理3.2.3 Iterator接口的方…

数据库典型例题2-ER图转换关系模型

1.question solution: 2.做题步骤 一些解释&#xff1a; <1弱实体把强属性的主键写进去&#xff0c;指向强属性。eg:E6_A13指向E5_A13 <21:1&#xff0c;1:n&#xff0c;m:n&#xff1a;将完全参与的一方&#xff08;双线&#xff09;指向另一方&#xff0c;并将对方的…

AutoCAD ObjectArx二次开发(三) 创建MFC界面

主题&#xff1a;本章节主要介绍在ObjectARX项目中如何使用MFC界面进行交互操作&#xff0c;具体采用模态对话框的形式。 一、创建MFC的对话框 在项目中添加新项&#xff0c;选择MFC类&#xff0c;点击确定按钮&#xff0c;如下图所示。 然后会出现下图界面&#xff0c;填写类…

苹果应用程序清理卸载工具:App Cleaner Uninstaller Pro for Mac

App Cleaner & Uninstaller Pro 是一款专为 Mac OS X 操作系统设计的应用程序清理和卸载工具。这款软件的主要功能是帮助用户彻底删除不需要的应用程序、插件和残留文件&#xff0c;从而释放磁盘空间并提高系统性能。 特点和优势&#xff1a; 彻底卸载应用程序&#xff1a;…

【软件设计书】详细设计说明书和概要设计说明书(Word原件直接套用)

系统详细设计说明书案例&#xff08;直接套用&#xff09; 1.系统总体设计 2.性能设计 3.系统功能模块详细设计 4.数据库设计 5.接口设计 6.系统出错处理设计 7.系统处理规定 软件开发全文档下载&#xff08;下面链接或者本文末个人名片直接获取)&#xff1a;本文末个人名片直接…