当前位置: 首页 > article >正文

下一代「自动化测试框架」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":

  1. // 引入 WebdriverIO

  2. const { remote } = require('webdriverio');

  3. (async () => {

  4. // 设置 WebDriver 的配置

  5. const options = {

  6. path: '/',

  7. capabilities: {

  8. browserName: 'chrome'

  9. }

  10. };

  11. // 初始化 WebDriver 实例

  12. const browser = await remote(options);

  13. try {

  14. // 打开百度主页

  15. await browser.url("https://www.baidu.com");

  16. // 在搜索框中输入搜索词

  17. await browser.setValue('#kw', 'WebdriverIO');

  18. // 点击搜索按钮

  19. await browser.click('#su');

  20. // 等待搜索结果页面加载完成

  21. await browser.pause(2000); // 这里简单使用 pause,实际项目中可能需要更复杂的等待策略

  22. // 获取搜索结果标题(假设是第一个搜索结果)

  23. const title = await browser.getTitle();

  24. console.log('搜索结果页面的标题是:', title);

  25. // 关闭浏览器

  26. await browser.deleteSession();

  27. } catch (err) {

  28. console.error('测试出错:', err);

  29. }

  30. })();

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

5、小结

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

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

 

 感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。


http://www.kler.cn/a/373664.html

相关文章:

  • AI代币是什么?AI与Web3结合的未来方向在哪里?
  • MySQL 主从复制、切换
  • 【论文复现】短期电力负荷
  • STM32F103C8T6 IO 操作
  • window11使用wsl2安装Ubuntu22.04
  • Docker可视化工具 Portainer 安装及配置
  • STM32--STM32 微控制器详解
  • unity3d————Mathf.Lerp() 函数详解
  • 从0开始深度学习(21)——读写数据和GPU
  • 【Nas】X-DOC:Mac mini 安装 ZeroTier 并替换 planet 实现内网穿透
  • 人工智能中的机器学习和模型评价
  • RNN在训练中存在的问题
  • 常见的机器学习模型汇总
  • C++ 复习记录(个人记录)
  • 基于Multisim的四位抢答器设计与仿真
  • 数据结构,问题 A: 翻转字符串
  • 野火鲁班猫4 (RK3588)系统配置
  • Mybatis 统计sql运行时间
  • 嵌入式linux跨平台基于mongoose的TCP C++类的源码
  • 如何在macOS开发中给 PKG 签名和公证(productsign+notarytool)
  • Vue中path和component属性
  • JAVA基础练习题
  • 攻防世界 MISC miao~详解
  • 无人机测绘遥感技术算法概述!
  • Q-learning原理及代码实现
  • 初识 BPF:从 Hello World 开始的内核编程之旅