热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

推荐一款自动化测试工具——Taiko

前言Web自动化测试工具从刚开始接触的QTP(UFT),到现在绝大多数公司或项目都在使用的Selenium,以及之后有很大发展前景的Cy

前言

Web自动化测试工具从刚开始接触的QTP(UFT),到现在绝大多数公司或项目都在使用的Selenium,以及之后有很大发展前景的Cypress。可以看出自动化测试工具越来越丰富了,当然这里所提到的都是比较有代表性的,市面上的优秀工具远远不止这三个。


简介

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/


安装

先确保已安装Node.js

之后打开命令行,输入安装命令

npm install -g taiko

注:如提示以下信息,为权限问题。

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


解决方法:修改用户权限,之后再次执行安装命令即可。

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

安装完成后,可查看版本信息。

taiko --version


记录测试

4.1、录制脚本

打开命令行输入命令

taiko

进入记录测试里,现在可以在此提示中使用Taiko的API作为命令。

在这里插入图片描述
例如:要启动Chrome浏览器实例,输入

openBrowser()

提示浏览器已打开


此时Chrome浏览器也自动打开

在这里插入图片描述
要查看所有可用的API,命令行输入

.api


要查看某个API方法的详细信息,命令行输入

.api API方法

例如:查看打开浏览器的API方法

.api openBrowser

显示打开浏览器的API方法


之后依次输入命令,完整命令:

openBrowser()
goto("https://www.cnblogs.com/alltests/")
click("公众号:AllTests软件测试")
goto("https://www.baidu.com/")
write("taiko test automation")
click("百度一下")
closeBrowser()

根据所输入的命令,浏览器做出相应操作。


4.2、生成脚本

生成测试脚本,命令行输入

.code

自动将已输入的命令生成脚本

在这里插入图片描述
复制/修改此代码或使用,直接将其保存为js文件。

例如:

.code mytest.js

将代码保存到mytest.js文件里。

4.3、退出录制

完成录制,命令行输入

.exit

退出录制
在这里插入图片描述


运行测试

使用已录制并生成脚本的mytest.js文件

脚本代码:

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();}
})();

无头模式

无头模式运行测试

打开命令行,输入执行命令

taiko mytest.js

运行结果:

执行时不弹出浏览器


浏览模式

查看测试在浏览器窗口中的执行过程

打开命令行,输入执行命令

taiko mytest.js --observe

运行结果:

与此同时弹出浏览器进行执行操作


仿真模拟

6.1、模拟设备

要模拟设备(使用浏览器的窗口),可以使用参数–emulate-device

打开命令行,输入执行命令

taiko --emulate-device 'iPhone X'

将浏览器模拟为iPhone X模式

在这里插入图片描述
浏览器打开页面的视角为模拟iPhone X模式显示

查看更多可模拟的设备:

https://docs.taiko.dev/devices

6.2、模拟网络

要模拟网络,可以使用参数–emulate-network

打开命令行,输入执行命令

taiko --emulate-network 'Regular4G'

设置网络为4G

在这里插入图片描述
模拟网络可用选项有GPRS、Regular2G、Good2G、Regular3G、Good3G、Regular4G、DSL、WiFi、Offline


与Gauge集成

Gauge是一个跨平台、并用于编写可读和可重用的自动化测试框架。属于BDD(Behavior Driven Development)行为驱动开发。

具有降低规范、数据驱动执行、并行执行和测试报告等功能。Gauge使测试维护变得更加容易,Gauge易于安装并与Taiko很好地集成,使用Gauge和Taiko,我们可以编写更可靠的自动化测试。

命令行输入安装命令

npm install -g @getgauge/cli

创建文件夹(例如:taiko-demo),之后命令行路径跳转到此文件夹下,输入初始化项目命令

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语法):

# 代表测试项目
## 代表测试用例
* 代表测试步骤,步骤的名称对应js文件里的关键词

文件内容:

# my_demo项目
## demo测试用例
* 测试步骤1:打开博客
* 测试步骤2:打开百度

2、编写step_implementation.js文件,在后面追加脚本

脚本内容:

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、执行脚本

方式一:打开命令行输入执行命令

gauge run [你的spec的文件名]

例如1:执行specs文件下的所有文件用例(example.spec、my_demo.spec)

打开命令行,输入命令

gauge run specs

运行结果:

在这里插入图片描述
例如2:执行specs文件下某个文件用例(my_demo.spec)

打开命令行,输入命令

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/

最后为方便大家学习测试,特意给大家准备了一份13G的超实用干货学习资源,涉及的内容非常全面。


包括,软件学习路线图,50多天的上课视频、16个突击实战项目,80余个软件测试用软件,37份测试文档,70个软件测试相关问题,40篇测试经验级文章,上千份测试真题分享,还有2021软件测试面试宝典,还有软件测试求职的各类精选简历,希望对大家有所帮助……

关注我公众号:【程序员二黑】即可获取这份资料了!


推荐阅读

高薪程序员也躲不过35岁这一关…当能力与年龄脱节,我们该如何自救

大学毕业开始销售…不甘于现状,转行测试的自救之路

从销冠到失业,最后选择软件测试,回头看看这段路,我很幸运!


推荐阅读
  • 前言:原本纠结于Web模板,选了Handlebars。后来发现页面都是弱逻辑的,不支持复杂逻辑表达式。几乎要放弃之际,想起了Javascript中ev ... [详细]
  • 当我在doWork方法中运行代码时,通过单击button1,进度条按预期工作.但是,当我从其他方法(即btn2,btn3)将列表传递给doWork方法时,进度条在启动后会跳转到10 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • node.jsurlsearchparamsAPI哎哎哎 ... [详细]
  • python+selenium十:基于原生selenium的二次封装fromseleniumimportwebdriverfromselenium.webdriv ... [详细]
author-avatar
梦露的殇_192
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有