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这样的云提供商使用远程用户代理进行测试。
代码语言:javascript复制npm install webdriverio
默认情况下,WebdriverIO使用Puppeteer自动化浏览器,如Chrome、Firefox或Chromium Edge。
官方示例:启动一个Chrome浏览器,并获取页面的标题。
代码语言:javascript复制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()