1. 假设现在要写一个业务流程脚本:添加了一个新用户,然后在列表中点击这个用户,进行下一步操作。
用户id 姓名 xxx xxx xxx
10001 张三 xxx xxx xxx
10002 李四 xxx xxx xxx
10003 王五 xxx xxx xxx
在录制脚本过程中,类似于上面这个页面表单,我只能录制到张三这个元素的text="张三"。但实际测试过程中,我们每次添加的用户名字都不相同。如果是selenium的话直接XPath的内容参数化即可,但是Katalon呢?它都是把元素封装在对象仓库。
2.其实Katalon也是支持的,官方文档给出了解决方案。
http://docs.katalon.com/display/KD/Creation+of+Test+Object+in+Object+Repository+in+Runtime
3.根据例子实际代码可以这么写,当然如果有其他属性如id之类的也是传进方法里。
import com.kms.katalon.core.testobject.ConditionType
//创建一个名为user_name的元素对象
static TestObject user_name(String text) {
TestObject user = new TestObject()
user.addProperty("text", ConditionType.EQUALS, text)
return user
}
4.因为写的方法直接返回的是一个元素对象,所以可以直接使用,不需要再findTestObject()了。
//直接作为一个元素对象来使用
WebUI.click(user_name("张三"))
5.这样脚本运行起来之后,user_name("张三"),就会去定位一个text="张三"的元素了。
*拿自动化脚本造测试数据也挺方便的
更新一下
之前是根据官网里推荐的写法,我自己也发现一个更简单的写法。
1. 将录制的元素对象中,固定的属性保留,如tag。可能会变化的text 勾去掉。
2.在脚本中。直接给这个元素添加一个text属性。
3.如果只需要一个属性就能定位到元素。那可以直接new一个元素对象。
WebUI.click(new TestObject().addProperty("text", ConditionType.EQUALS, "老师管理"))
WebUI.setText(new TestObject().addProperty("xpath", ConditionType.EQUALS, "你的xpath表达式"), '张三')