最近准备把公司的系统搞上UI自动化,先是自己用Python+selenium+pytest写了一个框架,开始写case的时候发现效率极其慢。原因为:

(1)开发为提高前端响应时间,使用前端路由技术,一个页面一次加载多个TAB,后台的TAB虽然不可见,但已加载并可定位到;亦或是前台的TAB虽然可见,但实际其中的元素不可见或不是在最上层,导致click失败;

(2)前端使用VUE框架,element的tag、class、name等属性带有随机的数字,不便于定位;

(3)自己写的xpath或css定位有时会定位到多个相同element或是一个也定位不到,单是编写定位就很耗时。

于是想到了selenium IDE录制自动抓取xpath,同时搜到了katalon Recorder更好用,再然后发现其还有Studio,使用录制+修改脚本的方法,效率还是比较高的,而且Katalon Studio也是支持PO模式的。想写个系列把自己遇到的问题记录下来,也方便大家学习。第一篇Katalon Studio介绍已经有人写的很棒了,就不重复造轮子了。

katalon官网:https://www.katalon.com/

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.Katalon VS Selemium

Katalon是在Selemium相同的内核上构建起来的一个自动化测试工具。官方给出的两者的对比文档:https://www.katalon.com/resources-center/blog/katalon-studio-vs-selenium-based-open-source-frameworks/。

我综合自己这两天使用的情况,大概可以总结为如下几点:

  • Katalon的用户群体范围更广,用户甚至不需要任何编程基础,只需要知道自己想做什么即可,而Selemium的用户群体是开发或者测试人员
  • Katalon是一个非常易用的图形化的工具,但它竟然是免费的(官方说法是Completely free • Built with Heart),并且是免安装版本,下载解压就能直接使用。而Selemium需要安装运行环境、语言驱动等等较为繁琐的步骤
  • 使用Selemium的时候,可能需要经常查询API文档以找到自己想要实现的功能,而Katalon大部分时候不需要(当然本身也是有非常完善的API文档的)
  • 专业人员通过Selemium可以完成各种复杂的功能,Katalon也可以,Katalon用的是Java和Apache Groovy作为其脚本开发语言
  • 性能方面,Katalon比Selemium差一点
  • Katalon提供了Spy和Record两个让构建测试变得异常简单的神级功能,以及很多内建的非常实用的功能(比如从文件、数据库等数据源获取数据填充到测试变量中)

2. 关于Katalon Studio

2.1 Katalon 是什么

Katalon Studio 是一款免费的自动化测试工具,可以安装在windows、macOS、linux操作系统上,基于selenium 和 Appium 测试框架,并集成了这些框架的优点。这个工具支持不同层次技能的测试开发人员使用,有很少编码经验的测试人员也可以很快的上手一个自动化测试项目,编码经验丰富的测试人员可以基于该工具做扩展,灵活的实现所需功能。

2.2 Katalon 特色

Katalon Stuion 是一款可安装的测试工具,集成了 Eclipse 的部分功能,又支持界面化编码,无论是经验丰富的测试开发人员还是测试新手,都能以自己熟悉的方式完成测试脚本的开发。Katalon Stuidio 的特点主要体现在以下几个方面。

2.2.1 提供一个完整的自动化测试解决方案

Katalon Studio 支持Web,Mobile,API 类型的自动化测试,它同时可以管理页面元素、测试数据、测试案例、生成自动化测试报告,可以集成到 CI/CD 过程中,兼容流行的质量处理工具,包括qTest,JIRA等,只需要使用 Katalon Studio 一个测试工具,就可以完成整个自动化测试流程。

2.2.2 环境安装简单

下载Katalon Studio后,在 windows 或者 mac 系统上只需双击 katalon.exe 即可运行环境,输入用户名和密码注册或者登录之后就可以使用了;在linux操作系统上,安装openjdk后,直接解压下载的安装包,使用命令行即可运行案例。

2.2.3 支持录制脚本

对于 Web 和 Mobile, katalon 提供了录制的功能,不同于selenium 或者 Appium 的录制功能,katalon 录制的脚本可读性很强,一个操作动作会生成一条语句,由 WebUI/Mobile + 关键字 + 页面元素构成,下图是一个录制的App登录脚本的Manual 模式:

下图是该脚本的 Script 模式:

2.2.4 可视化查找页面元素

除了支持录制脚本外,Katalon 还提供了 “Spy Web” 和 “Spy Mobile” 的功能,可以可视化的将页面元素存储在对象页面对象库中,方便写脚本时调用。

2.2.5 可视化案例管理

1.支持手动和脚本两种模式编写案例


2.提供丰富的关键字
对于Web、Mobile、API,katalon 提供了丰富的关键字,比如点击、获取焦点、输入文本、滑屏、解锁、等待页面元素出现等等,几乎覆盖了测试中用到的所有操作,在使用时直接调用即可,无需再次封装。另外还支持自定义关键字,实现特殊功能。关键字管理如下图。


3.页面对象管理库
Katalon Studio 提供了单独的页面对象管理库。


可以使用录制脚本自动生成页面对象,也可以使用页面对象探测器(Spy Web, Spy Mobile) 手动存储页面对象。页面对象和测试案例分开,便于后续测试脚本维护。

4.测试数据管理
Katalon Studio 提供了单独的数据管理模块。

数据源支持多种格式: Excel、csv、database等。脚本中的数据可以以参数的形式调用数据源中数据,便于脚本维护。

5.检查点管理
Katalon中检查点的来源同测试数据,可以是Excel、csv、 database 格式的数据,丰富的检查点校验功能可以帮助我们更准确的验证案例是否成功。

6.提供TestSuit 管理TestCase

TestSuit 中可以添加删除 TestCase,并选择TestCase的执行顺序。TestSuit中的案例执行完成后,可以在Reports中查看测试报告,也可以在Log Viewer 视图中查看执行日志。

2.2.6 支持扩展和自定义功能

Katalon 允许用户自定义Method,Test Listeners、KeyWord,也可以导入导入外部jar包以实现更复杂的功能。

2.2.7 版本更新快

Katalon Studio 几乎是一个月更新一次版本,使用过程中遇到的问题可以在官方论坛中提问。

3 Katalon 帮我们解决了哪些难题

1.编码能力弱
无论使用Selenium 还是 Appium, 我们需要结合其他测试框架编写测试脚本,需要自定义脚本的管理模式,比如PageFactory 模式或者关键字驱动模式,还需要自己封装关键字并且需要处理测试过程中遇到的异常。这样会花费很多时间学习开发技能,并且复杂的脚本也不易于在项目中推广,而katalon支持录制脚本,对不能录制的脚本,我们也可以使用已经封装好的关键字,借助页面元素探测器编写脚本,并且katalon也提供了可视化的编程视图,只需一些编码基础,都可以很好的使用katalon。
2.安装环境困难
Selenium 和 Appium 安装时需要依赖一些其他的工具,特别是Appium,安装之前需要安装Java环境,需要安装Android Sdk,需要更新很多东西。在 安装Appium 的过程中,会遇到不少的坑,而Katalon Studio 只需双击运行 katalon.exe 即可运行,大大节省了安装时间。
3.定位元素困难
测试App的时候定位元素需要使用uiautomatorviewer 或者Chrome的扩展功能,在使用使用Chrome的扩展功能时需要FQ,这在一定程度上增加了查找元素的复杂性。使用Katalon 的 Spy Mobile 功能基本能获取 App 的所有元素,而且使用此方式查找元素比较稳定。
4.其他工具录制脚本可读性差
使用 Selenium 或者 Appium 录制的脚本可读性非常差,特别是 Appium,录下的脚本可用的信息特别少,而Katalon 录制的脚本非常简洁,可读性也很好。

4. Katalon 存在的不足

相关中文文档少
目前国内 Katalon 的用户非常少,相关的使用文档也很少,但官方的文档还是很详细的,遇到问提可以查阅用户手册。

不支持中文
Katalon 目前不支持使用中文命名文件夹、页面对象、案例名称等,测试报告也不支持中文。

灵活性欠佳
相对于Appium 或者 Selenium,katalon 的使用门槛降低不少,但是可视化的工作方式使其在处理一些复杂的工作流上不够灵活,这时需要我们自定义keywords 或者 method 来实现相关功能。

转自:https://blog.csdn.net/xuecancan/article/details/79529155

https://www.cnblogs.com/wushangjue/p/8406258.html

katalon系列一:初识Katalon Studio自动化测试工具的更多相关文章

  1. katalon系列六:Katalon Studio Web UI关键字讲解

    在一个Test Case里,点左上Add-Web UI Keyword,可以添加一行新的命令. 像Click.setText.Delay这些最基本的,大家还是看看官方的API文档吧,望文知义,如果是纯 ...

  2. katalon系列十一:Katalon Studio在Jenkins持续集成

    以下在WIN10上运行正常.安装准备:一.安装Katalon Studio二.安装Jenkins三.获取Katalon命令行运行命令:点击工具栏的‘Build CMD’按钮,选择测试集以及其他选项:选 ...

  3. katalon系列十:Katalon Studio自定义关键字之拖拽

    Katalon Studio自带关键字“Drag And Drop To Object”,可以在这个网站实践:http://jqueryui.com/droppable/#default 不过“Dra ...

  4. katalon系列八:Katalon Studio图片识别

    Katalon Studio自带集成了图片识别功能,有2个比较有用的图片识别相关的命令:Wait For Image Present和Click Image.这里重点讲下Click Image命令: ...

  5. katalon系列七:Katalon Studio全局变量

    假如你有3个脚本都用到了用户名,如果是写死在脚本中,那么需要改变的时候,你需要修改3个地方,我们可以把用户名设为全局变量,在3个脚本中引用,需要修改时只要修改全局变量中的用户名值即可. 在Katalo ...

  6. AS学习系列[1]——初识Android Studio

    写在前面的话:由于于方老师的高墙所限,网络成了学习Android第一道“拦路虎”.所以,个人以为,在学习Android之前需要了解下FQ技术(仅仅是为了技术学习). 1.AS AS(Android s ...

  7. katalon系列十三:5.10新增跳过用例&命令行赋值全局变量

    Katalon Studio升级到5.10版本了,这次新增了2个很实用的功能:一.跳过用例在Listener中新增了跳过用例方法,Listener类似于JUnit4的annotation中的@Befo ...

  8. 自动化测试工具Katalon简单使用

    前一段时间接触了下Katalon,当时只是简单用了下,今天看到Katalon给发邮件,发现都忘记了,因此重新学习并记录下来 Katalon是在Selemium相同的内核上构建起来的一个自动化测试工具 ...

  9. katalon系列十七:报告&Katalon Analytics

    一.邮件报告Suite执行完后,严格来说这个不算报告,只是邮件通知执行结果,具体设置请看katalon系列三 二.文件报告Suite执行完后,会在项目文件夹下/Report/Suite Name/ti ...

随机推荐

  1. 2018年第九届蓝桥杯【C++省赛B组】第四题 测试次数

    x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机.各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通.x星球 ...

  2. javaweb基础(38)_事务

    一.事务的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 例如:A——B转帐,对应于如下两条sql语句  update from account set mone ...

  3. 开源项目托管github步骤

    一.在github新建项目,复制到本地更改之后命令提交. 1.进入github主页新建项目:https://github.com/ccyinghua 2.复制项目地址 3.打开git Bash 命令行 ...

  4. 可复用 React 的 HOC 以及的 Render Props

    重复是不可能的,这辈子都不可能写重复的代码 当然,这句话分分钟都要被产品(领导)打脸,真的最后一次改需求,我们烦恼于频繁修改的需求 虽然我们不能改变别人,但我们却可以尝试去做的更好,我们需要抽象,封装 ...

  5. CMD批处理复制目录下所有文件

    从我接触编程时,WIN7已经是最普及的系统了. 有一天,我需要在服务器更新某个软件或游戏的时候,我都需要先在其中一台服务器下载更新, 然后同步到其他服务器,而且这种操作也是非常频繁的,我就想写个批处理 ...

  6. 【转载】C语言itoa()函数和atoi()函数详解(整数转字符C实现)

    本文转自: C语言itoa()函数和atoi()函数详解(整数转字符C实现) 介绍 C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串. int/float to ...

  7. Java中的二进制运算出错问题

    问题: 最近在做Java web项目中需要计算金额总和,在这里出现了一个问题是我以前没有关注到的: System.out.println(2.0-1.1); 执行时候的console中打印输出的是 0 ...

  8. 提高mysql性能(like搜索替换 )

    一 .mysql用find_in_set代替like搜索提高性能 SELECT * from mobantestinfo1 where find_in_set('33',info2); 二 .使用内部 ...

  9. 1016-02-首页17-添加转发微博控件-计算转发配图的 Frame-------打印出 被转发微博的模型

    说明:HWStatus为微博模型,_retweeted_status 为返回的数据( 一条微博模型)里面的一个属性,_retweeted_status 不为空表示此微博是否转发了其他微博._retwe ...

  10. java8之list集合中取出某一属性的方法

    上代码 List<User> list = new ArrayList<User>(); User user1 = new User("第一位"," ...