自动化测试工具-Taiko
目录
- 1、前言
- 2、简介
- 3、安装
- 4、记录测试
- 4.1、录制脚本
- 4.2、生成脚本
- 4.3、退出录制
- 5、运行测试
- 5.1、无头模式
- 5.2、浏览模式
- 6、仿真模拟
- 6.1、模拟设备
- 6.2、模拟网络
- 7、与Gauge集成
- 8、其他
1、前言
Web自动化测试工具从刚开始接触的QTP(UFT),到现在绝大多数公司或项目都在使用的Selenium,以及之后有很大发展前景的Cypress。可以看出自动化测试工具越来越丰富了,当然这里所提到的都是比较有代表性的,市面上的优秀工具远远不止这三个。
2、简介
Taiko是一个免费的开源Node.js库,带有一个简单的API来自动化基于Chromium的浏览器(Chrome、Microsoft Edge、Opera)和Firefox。
Taiko测试脚本是用JavaScript或任何编译为JavaScript的语言编写的,例如TypeScript。
Taiko的API是为测试人员设计的,与其他测试框架不同,Taiko将浏览器视为一个黑匣子,使用Taiko,您可以通过查看网页而不检查其源代码来编写脚本。
Taiko与Selenium的区别:
(1)Taiko与Selenium非常不同。Selenium使用W3C标准的WebDriver。Taiko使用Chrome DevTools协议。Taiko不需要驱动程序(如ChromeDriver)来连接和自动化浏览器。Taiko捆绑了最新版本的Chromium,但它可以自动化任何支持Chrome DevTools协议的浏览器。
(2)与可以用多种编程语言编写脚本的Selenium不同,Taiko将只支持JavaScript和编译为JavaScript的语言。
官方网址:https://taiko.dev/
3、安装
先确保已安装Node.js
之后打开命令行,输入安装命令
代码语言:javascript复制npm install -g taiko
注:如提示以下信息,为权限问题。
代码语言:javascript复制npm ERR! The operation was rejected by your operating system
npm ERR! It is likely you do not have the permissions to access this file as the current user
解决方法:修改用户权限,之后再次执行安装命令即可。
代码语言:javascript复制sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
安装完成后,可查看版本信息。
代码语言:javascript复制taiko --version
4、记录测试
4.1、录制脚本
打开命令行输入命令
代码语言:javascript复制taiko
进入记录测试里,现在可以在此提示中使用Taiko的API作为命令。
例如:要启动Chrome浏览器实例,输入
代码语言:javascript复制openBrowser()
提示浏览器已打开
此时Chrome浏览器也自动打开
要查看所有可用的API,命令行输入
代码语言:javascript复制.api
显示所有可用API方法
要查看某个API方法的详细信息,命令行输入
代码语言:javascript复制.api API方法
例如:查看打开浏览器的API方法
代码语言:javascript复制.api openBrowser
显示打开浏览器的API方法
之后依次输入命令,完整命令:
代码语言:javascript复制openBrowser()
goto("https://www.cnblogs.com/alltests/")
click("公众号:AllTests软件测试")
goto("https://www.baidu.com/")
write("taiko test automation")
click("百度一下")
closeBrowser()
根据所输入的命令,浏览器做出相应操作。
4.2、生成脚本
生成测试脚本,命令行输入
代码语言:javascript复制.code
自动将已输入的命令生成脚本
复制/修改此代码或使用,直接将其保存为js文件。
例如:
代码语言:javascript复制.code mytest.js
将代码保存到mytest.js文件里。
4.3、退出录制
完成录制,命令行输入
代码语言:javascript复制.exit
退出录制
5、运行测试
使用已录制并生成脚本的mytest.js文件
脚本代码:
代码语言:javascript复制const { openBrowser, goto, click, write, closeBrowser } = require('taiko');
(async () => {
try {
await openBrowser();
await goto("https://www.cnblogs.com/alltests/");
await click("公众号:AllTests软件测试");
await goto("https://www.baidu.com/");
await write("taiko test automation");
await click("百度一下");
} catch (error) {
console.error(error);
} finally {
await closeBrowser();
}
})();
5.1、无头模式
无头模式运行测试
打开命令行,输入执行命令
代码语言:javascript复制taiko mytest.js
运行结果:
执行时不弹出浏览器
5.2、浏览模式
查看测试在浏览器窗口中的执行过程
打开命令行,输入执行命令
代码语言:javascript复制taiko mytest.js --observe
运行结果:
与此同时弹出浏览器进行执行操作
6、仿真模拟
6.1、模拟设备
要模拟设备(使用浏览器的窗口),可以使用参数--emulate-device
打开命令行,输入执行命令
代码语言:javascript复制taiko --emulate-device 'iPhone X'
将浏览器模拟为iPhone X模式
浏览器打开页面的视角为模拟iPhone X模式显示
查看更多可模拟的设备:
https://docs.taiko.dev/devices
6.2、模拟网络
要模拟网络,可以使用参数--emulate-network
打开命令行,输入执行命令
代码语言:javascript复制taiko --emulate-network 'Regular4G'
设置网络为4G
模拟网络可用选项有GPRS、Regular2G、Good2G、Regular3G、Good3G、Regular4G、DSL、WiFi、Offline
7、与Gauge集成
Gauge是一个跨平台、并用于编写可读和可重用的自动化测试框架。属于BDD(Behavior Driven Development)行为驱动开发。
具有降低规范、数据驱动执行、并行执行和测试报告等功能。Gauge使测试维护变得更加容易,Gauge易于安装并与Taiko很好地集成,使用Gauge和Taiko,我们可以编写更可靠的自动化测试。
命令行输入安装命令
代码语言:javascript复制npm install -g @getgauge/cli
创建文件夹(例如:taiko-demo),之后命令行路径跳转到此文件夹下,输入初始化项目命令
代码语言:javascript复制gauge init js
使用编辑器(Visual Studio Code)打开项目
Visual Studio Code下载地址:
https://code.visualstudio.com/
项目目录结构:
在日常的自动化脚本编写阶段,主要维护specs目录下的.spec文件和tests目录下的.js文件。
因属于BDD,采用.spec文件里的某某关键字对应.js文件里的相应js脚本代码。
1、创建my_demo.spec文件,负责填写测试行为
编写规则(支持Markdown语法):
代码语言:javascript复制# 代表测试项目
## 代表测试用例
* 代表测试步骤,步骤的名称对应js文件里的关键词
文件内容:
代码语言:javascript复制# my_demo项目
## demo测试用例
* 测试步骤1:打开博客
* 测试步骤2:打开百度
2、编写step_implementation.js文件,在后面追加脚本
脚本内容:
代码语言:javascript复制step("测试步骤1:打开博客", async function () {
await goto("https://www.cnblogs.com/alltests/");
await click("公众号:AllTests软件测试");
});
step("测试步骤2:打开百度", async function () {
await goto("https://www.baidu.com/");
await write("taiko test automation");
await click("百度一下");
});
3、执行脚本
方式一:打开命令行输入执行命令
代码语言:javascript复制gauge run [你的spec的文件名]
例如1:执行specs文件下的所有文件用例(example.spec、my_demo.spec)
打开命令行,输入命令
代码语言:javascript复制gauge run specs
运行结果:
例如2:执行specs文件下某个文件用例(my_demo.spec)
打开命令行,输入命令
代码语言:javascript复制gauge run specs/my_demo.spec
方式二:利用编辑器执行
打开.spec文件,打击执行即可,执行结果显示在控制台上。
4、测试报告
用例执行完成后,会在项目的reports/html-report/目录里生成测试报告,打开测试报告。
8、其他
API方法:
https://docs.taiko.dev/api/reference/
截图:
https://docs.taiko.dev/taking_screenshots/
断言:
https://docs.taiko.dev/assertions/
文件上传和下载:
https://docs.taiko.dev/file_upload_and_download/
使用元素列表:
https://docs.taiko.dev/working_with_element_lists/
插件:
https://docs.taiko.dev/plugins/