Katalon中控件的参数化
背景:
在Katalon中,我们通过Spy抓取的控件,保存在Object Repository中,其中的定位的属性是固定的
如果把这些固定的定位属性参数化呢,一种方式是直接通过Xpath路径,创建Test Object,另外一种
方法是把,获取到的控件定位属性参数化
如何进行参数化呢?
定位属性参数化:
所谓控件定位属性参数化,就是当这个控件运行的时候,动态给定位属性参数具体的值,如text
用一个实际的例子来看
假设APP启动的时候有一个引导界面,其中需要我们从六个兴趣标签中点击选择
通过Spy Mobile,我们可以看到这几个兴趣标签,但无法通过resource-id来区分,因为resource-id都一样
但Text是不一样的,那么我们就是需要把这个Text进行参数化,在运行的时候,给不同的Text值,从而选择
不同的控件
捕获到的控件如下,其中一共有六个控件,其中resource-id其实都是一样的
如果我们要把其中的text修改为动态的属性
此时我们需要把text的vlaue修改为 ${textname}
此时表示这个属性为动态的
并且关联的动态变量的名字为testname
在testcase中的命令中选择使用这个控件,此时打开Test Object Input
在这个Test Object选择中,下面有一个“Variables"
在这个Variables中可以创建一个变量,同时指定变量的值
指定的变量名,需要和Object Repository中,控件属性中指定的变量名要一致,即设置为"testname"
此时切换到Scripts中,可以看到详细的命令
Mobile.tap(findTestObject('tag_label', [('textname') : '军事知识']), 0)
当然这个动态的变量,可以支持文本,数字,或者Katalon中的变量,全局变量等
如可以在Variables中,添加了一个变量,如叫label
此时,命令就变成了
Mobile.tap(findTestObject('tag_label', [('textname') : label]), 0)
通过这种方式,我们可以在运行的时候,参数化控件的定位属性
那么,在一开始六个相似的Text控件,我们可以在Object Repository,只保留一个
而不需要创建六个相似的控件,但只是Text属性不同
如果依次点击,可以通过传递不同的Text的值来分别动态定位
在脚本中,可能就是这样的
Mobile.tap(findTestObject('tag_label', [('textname') : '军事知识']), 0)
Mobile.tap(findTestObject('tag_label', [('textname') : '史前巨兽']), 0)
Mobile.tap(findTestObject('tag_label', [('textname') : '动物天地']), 0)
Mobile.tap(findTestObject('tag_label', [('textname') : '恐龙世界']), 0)
如果有多个动态的属性,其实是一样的
如添加resource-id也同样变成了动态的属性
那么命令如下:
Mobile.tap(findTestObject('tag_label', [('textname') : '军事知识', ('resouceid') : 'com.mxr.dreambook:id/tv_tag']), 0)
这部分的内容,Katalon的帮助中有说明
可以参考
https://docs.katalon.com/katalon-studio/docs/manage-test-object.html#test-objects-in-scripting-view
定位序列:
现在还是思考这个六个相似的TextView,已经实现通过Text属性来动态定位,但如果要循环点击这六个标签
我们必须先创建一个数值,类似['军事知识','恐龙世界','动物世界'],然后通过循环来遍历
但如果Text的内容修改了,则会失效,并且通过文本数组来遍历有些笨重
我们想是否可以通过序列来遍历呢?
一开始观察的时候,想到是否可以通过instance的属性
因为这六个不同的TextView,其中的instance的属性分别是3,4,5,6,...
实际尝试后发现通过instance无法定位,因为instance属性是无法生效的,
我们在xpath中,如果定位到多个,是可以通过[i]来区分
此时可以在Object Repository中,修改那个控件的定位方式为xpath
Xpath属性为
(//*[@class = 'android.widget.TextView' and @resource-id = 'com.mxr.dreambook:id/tv_tag'])[${index}]
其中,我们把这个index作为一个动态的参数,类似之前的方法
在脚本中,我们就可以通过1到6的循环来循环点击这个标签
//选择六个兴趣标签
for (def i : (1..6)) {
Mobile.tap(findTestObject('4Dapp/flashpage/tagselect/tag_Text', [('index') : i]), 5)
}
这样就实现了动态的循环
这部分的实现,可以参考Katalon的说明
https://docs.katalon.com/katalon-studio/docs/parameterize-webmobile-test-object-properties.html
参考项目
Katalon官方参考项目
Katalon中控件的参数化相关推荐
- 用Cocos Studio 2.3.2制作UI界面中控件不再支持运行3d动作特效
用Cocos Studio 2.3.2制作UI界面中控件不再支持运行3d动作特效 cocos2d-x + cocos studio无疑是当下二维手游开发的利器,但是在从旧版本向新版本的升级过程中,坑 ...
- 第三部分:MFC中控件的样式
2019独角兽企业重金招聘Python工程师标准>>> 第三部分:MFC中控件的样式 控件是用来建立Windows应用程序用户界面的用户界面对象.你所见到的大部分Windows应用程 ...
- activex 控件的id 定义位置+使用ocx控件的客户端程序中对控件定义的文件中控件id定义的位置...
activex 控件的id 定义位置 // SuperDisplayCtl.cpp IMPLEMENT_OLECREATE_EX(CSuperDisplayCtrl, "SuperDispl ...
- Repeater 操作HeaderTemplat或FooterTemplat模板中控件
获取HeaderTemplat模板中控件 LinkBtn = rp.Controls[0].FindControl("LinkBtnMoreDel") as LinkButton; ...
- 自定函数获取datagrid,datalist,rpeater控件中header,footer栏中控件
在论坛上看到很多关于datagrid,gridview,datalist,rpeater提取header,footer中控件的问题,整理了一下.供大家分享 下面我以DataGrid为便进行说明. fo ...
- vs2010 设计视图中控件无法加载,提示未将对象设置到对象的实例。
vs2010 设计视图中控件无法加载,提示未将对象设置到对象的实例 的 解决方法 解决方案: 卸载掉你机器的所有silverlight插件,然后重启 ! 搞定 如果想使用silverlig ...
- 【VS开发】VS2010 MFC中控件、对话框等背景颜色动态修改的方法
[VS开发]VS2010 MFC中控件.对话框等背景颜色动态修改的方法 标签(空格分隔):[VS开发] 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明: ...
- C#在一个form中改变另一个form中控件的内容、C#做登录界面并且密码显示为*
C#中在一个窗体中改变另外一个窗体中控件的显示 这个问题可以用来改变messageBox中默认显示的"确定",可以使用此方法重新写一个窗体,显示OK: 方法: 1.将要改变的for ...
- VS2010开发MFC时工具箱中控件不见了的解决方法
VS2010开发MFC时突然发现工具箱中控件不见了,该怎么调出工具箱中的控件呢? 1.调出资源视图,如果有资源视图,则跳过本步骤 点击菜单栏:视图->资源视图,就能调出资源视图了 2.调出工具箱 ...
最新文章
- 第17课:基于 CRF 的中文句法依存分析模型实现
- Centos7 CMake升级
- 可信云十年,重磅研究成果与2021云计算十大关键词悉数发布
- 开发中,常用到的Eclipse快捷键
- 小程序自定义数字键盘|仿微信支付、支付宝支付密码键盘
- Java学习笔记(3)——资源管理
- python 制作动画片_cocos2d from python Animation 动画片的实现
- Hilbert变换及相关特征值
- 搭建web项目常见错误
- 大学生微信公众号使用情况调查
- 计算机图形学必读的10本书
- PHP框架底层源码怎么看,php底层_php框架底层源码怎么看
- C++实现端口扫描器
- 适合运动的耳机有哪些、最好用的五款运动型耳机推荐清单
- 显示器接口_显示器接口类型怎么选,4种主流接口要了解
- 100个RPA经典应用场景解析
- Cadence Allegro修改Waived DRC标识颜色图文教程及视频演示
- 《职工带薪年休假条例》2008年元旦起施行(全文)
- 终端怎么退出python命令行
- 时间戳转换为String
热门文章
- tf.keras.activations.gelu tensorflow1.15.0
- Redis分布式Session
- dubbo负载均衡概念和使用
- 赫夫曼编码(Java版)
- C++设计一个Bank类,实现银行的创建账户存钱取钱查询交易明细
- 写好 Git Commit 信息的 7 个建议
- 程序员提加薪被领导点名批评,领导:技术不提高就想着加薪?
- 医疗票据识别,OCR深度学习新领域。
- HTML+CSS+JS网页设计期末课程大作业____(航天月球响应式 3页)
- 任何赴日软件开发问题