下一代浏览器和移动自动化测试框架:WebdriverIO

1、介绍

今天给大家推荐一款基于Node.js编写且号称下一代浏览器和移动自动化测试框架:WebdriverIO

简单来讲:WebdriverIO 是一个开源的自动化测试框架,它允许测试人员使用 Node.js 编写自动化测试脚本,用于测试Web应用、移动应用和桌面应用程序。能够执行端到端(e2e)、单元和组件测试,主要基于WebDriver、WebDriver BiDi和Chrome DevTools协议进行操作。功能丰富、易于使用的测试框架,支持多种浏览器和设备,并且与Selenium WebDriver API兼容。

官方网址:

https://webdriver.io/

2、主要功能和特点

  • 开源:WebdriverIO是一个开源项目,它使得开发者和测试人员可以在自己的项目中自由地使用和修改它。

  • 跨平台、多语言支持:支持多种编程语言(如JavaScript、TypeScript、Python等)和多种操作系统(如Windows、Linux、Mac OS等),确保了跨平台和跨语言的兼容性。

  • 多浏览器支持:WebdriverIO遵循W3C WebDriver标准,确保了与主流浏览器的无缝集成,同时支持WebDriver BiDi和Chrome DevTools协议,利用这两个强大的工具集,可以直接控制浏览器的底层功能,进行更精细的调试和测试。

  • Appium整合:WebdriverIO不仅支持Web应用程序的测试,还通过Appium平台提供了对Android和iOS应用的自动化支持。

  • 丰富的API和工具:WebdriverIO提供了一组强大的API和工具,使得开发人员能够轻松地编写和执行自动化测试脚本。这些API和工具包括遍历元素列表的方法(如$$、forEach、map、filter和reduce等),使得开发者可以灵活地进行元素操作。

  • 支持多种测试框架和断言库:WebdriverIO支持BDD/TDD测试框架,如Cucumber、Jasmine和Mocha,以及断言库如Chai、Expect.js等。这些支持使得开发者可以根据自己的喜好和需求选择合适的测试框架和断言库进行测试。

  • 易用性与可扩展、封装了Selenium WebDriver API: 与Selenium相比,WebdriverIO提供了更简洁的API,使得编写测试脚本变得更加简单易懂,尤其是对于熟悉jQuery的开发者来说。通过封装Selenium WebDriver API, WebdriverIO拥有高度的可扩展性,允许用户根据需要扩展其功能。

  • 支持多种测试模式:WebdriverIO不仅支持web应用的自动化测试,还支持Native移动端应用和Electron开发的桌面端应用的测试。

3、环境安装

1、安装Node.js

  • 下载与安装:访问Node.js官网https://nodejs.org/下载并安装最新稳定版的Node.js。安装过程通常是“傻瓜式”的,直接点击“下一步”直到完成即可,并确保配置到环境变量中。
  • 安装完成后,打开命令行或终端,输入node -v来检查Node.js是否安装成功,如果显示版本号,则说明安装成功。

2、初始化NPM空间

  • 在想要存放WebdriverIO项目的文件夹中(例如D盘的WebdriverIO-test文件夹),打开命令行或终端。
  • 输入npm init -y命令来初始化一个新的NPM项目空间。这个命令会创建一个package.json文件,用于管理项目的依赖包。

3、安装WebdriverIO CLI

  • 在命令行或终端中,输入npm i --save-dev @wdio/cli命令来安装WebdriverIO的命令行接口(CLI)。
  • 安装完成后,可以在node_modules/.bin/目录下找到wdio命令。但为了方便使用,建议将其添加到环境变量中,或者在命令行中通过完整路径调用。

4、生成配置文件

  • 安装完CLI后,使用npx wdio config 命令来生成一个基本的配置文件
  • 执行命令后,会在项目根目录下生成一个wdio.conf.js文件,这个文件包含了WebdriverIO的配置信息

5、安装其他依赖(可选)

  • 根据您的测试需求,您可能还需要安装其他NPM包,如浏览器驱动程序(chromedriver、geckodriver等)的npm封装包。
  • 这些包可以通过npm install命令来安装,例如:npm install chromedriver

对于Chrome和Firefox等浏览器,您需要下载与浏览器版本相匹配的驱动程序(如chromedriver、geckodriver)。

4、编写脚本

根据wdio.conf.js文件中的配置项,配置项目的测试环境、浏览器、测试框架等,就可以开始编写测试脚本了。

以下是一个简单的 WebdriverIO 脚本示例,用于在百度中搜索 "WebdriverIO":

// 引入 WebdriverIO  
const { remote } = require('webdriverio');  (async () => {  // 设置 WebDriver 的配置  const options = {  path: '/',  capabilities: {  browserName: 'chrome'  }  };  // 初始化 WebDriver 实例  const browser = await remote(options);  try {  // 打开百度主页  await browser.url('https://www.baidu.com');  // 在搜索框中输入搜索词  await browser.setValue('#kw', 'WebdriverIO');  // 点击搜索按钮  await browser.click('#su');  // 等待搜索结果页面加载完成  await browser.pause(2000); // 这里简单使用 pause,实际项目中可能需要更复杂的等待策略  // 获取搜索结果标题(假设是第一个搜索结果)  const title = await browser.getTitle();  console.log('搜索结果页面的标题是:', title);  // 关闭浏览器  await browser.deleteSession();  } catch (err) {  console.error('测试出错:', err);  }  
})();

这个示例使用了 remote 方法来初始化 WebDriver 实例,这是 WebdriverIO v5 的用法。如果你使用的是 WebdriverIO v6 或更高版本,可能需要使用不同的 API(如 new Browser())。

5、小结

综上所述,WebdriverIO是一个功能强大、灵活易用的自动化测试框架,适用于多种测试场景和需求。无论是新手还是经验丰富的测试工程师,都能通过WebdriverIO实现高效的自动化测试,感兴趣的读者可以尝试一下。

项目地址:https://github.com/webdriverio/webdriverio

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)

教程简介 EasySQLite是一个七天.NET 8操作SQLite入门到实战详细教程(包含选型、开发、发布、部署)! 什么是SQLite?SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite 源代码不…

【Mac】Termius for mac(终端模拟器/SSH/SFTP客户端)

今天给大家介绍一款软件叫Termius,这是一款终端模拟器/SSH/SFTP客户端。软件介绍 Termius for Mac是一款功能强大的跨平台SSH客户端,专为开发人员、系统管理员和网络工程师设计。它支持SSH、Telnet、Mosh等多种协议,能够安全地连接和管理各种远程服务器和设备。Termius for …

基于概率判断矩阵A*B是否等于C

如果是\(O(n^3)\)的暴力肯定会T,那么我们想有没有一种方法可以不用直接让 \(A*B\) 而是间接得到, 我们可以随一个n*1的矩阵 D 出来,矩阵乘法是满足交换律的: \(A*B=C\) \(A*B*D=C*D\) \(A*(B*D)=C*D\) 这样我们就可以在\(O(n^2)\)的复杂度完成判断, 根据不知道是啥的秩_零化…

pyCharm 设置 签名,时间

#!python3.8 # -*- coding: utf-8 -*- # --- # @File: ${NAME}.py # @Author: ${USER} # @Time: ${MONTH_NAME_SHORT} ${DAY}, ${YEAR} # ---

Pycharm 设置 flask 监听端口

新建 flask 项目之后,Pycharm 会默认生成1个 flask server,在默认端口 5000运行 如果要设置自己的 flask 端口,就再编写 run.py 文件,然后运行它from flask import Flaskapp = Flask(__name__)@app.route(/) def hello_world(): # put applications code herereturn Hello …

2024-8-11 算法学习

P4301 [CQOI2013] 新Nim游戏 题意:给定一串数列,拿走数列中的一些数,使得剩下来的一些数的所有非空子集的异或和都不为0,且拿走的数的和要最小 类似于线性代数,如果一些元素能够异或和为0,那么说明这些元素“线性相关”,所以只要留下无关的数,那么就满足题意。 采取线性…

vue组件的完整原型链

转自:https://blog.csdn.net/weixin_65692463/article/details/128173817 vue组件的完整原型链构造函数原型 prototype构造函数通过原型分配的函数是所有对象所共享的JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象。注意这个 prototype 就是一个对…

Ethereum学习笔记 ---- 通过 Event 学习《合约ABI规范》

以太坊合约ABI规范见 官方文档-合约ABI规范 这里通过实验来印证 ABI 编码在 Event log 中的实现。 本地启动 ganache 首先在本地启动 ganache 作为 evm 链单节点,稍后与以太坊的交互都是通过与本地的 ganache 节点交互来实现的。 Ganache官网 将 ganache 节点的端口设置为以太…

pycharm专业版的安装和破解教程

1. 下载资源后解压,以管理员身份运行pycharm-professional-2024.1.exe 解压码:520000 下载链接:https://pan.xunlei.com/s/VO41LIAJ5geCjsQuhaUTNRM8A1?pwd=tjwt# 2. 安装程序内:下一步 -> 设置安装目录(软件安装不推荐放c盘,可以改成别的盘),下一步 -> 根据需要…

【转载】Behinder4.1(冰蝎)重写传输协议

0x01 编写流程首先新建你自己的传输协议名称然后使用java编写本地的加密函数再编写对应的解密函数,就可以保存然后再用对应语言编写远程加解密函数然后通过Wireshark抓包可以发现流量数据已经成功就行了加密 0x02 测试源码 1、本地加解密 // 加密函数 private byte[] Encrypt(…

pwntools缓冲区溢出与栈没对齐

我是ubuntu22.04,遇到了极其诡异的事情:可真是气死我了,got EOF是在逗我?怎么就EOF了?怎么就到end of file了? 下面请欣赏大佬的讲解:以下贴上gpt更详细的解答,我这次深刻的记住了栈要16字节对齐(我以前一直以为这只是为了提高效率的,可选可不选,无非慢一点) 当栈没…

Elasticsearch 磁盘空间异常:一次成功的故障排除案例分享

故障现象 近日有客户找到我们,说有个 ES 集群节点,磁盘利用率达到了 82% ,而其节点才 63% ,想处理下这个节点,降低节点的磁盘利用率。 起初以为是没有打开自动平衡导致的,经查询,数据还是比较平衡的。利用率较高的是 76 节点,如果 76 节点的分片比其他节点多,好像还比…