Testing 在对象存储库中维护TestObjects与在script-Katalon Studio中动态创建TestObjects

Testing 在对象存储库中维护TestObjects与在script-Katalon Studio中动态创建TestObjects,testing,automated-tests,katalon-studio,Testing,Automated Tests,Katalon Studio,最初,当我使用Katalon Studio启动web自动化时,我捕获对象,将它们存储在对象存储库中,然后在脚本中使用它们。这有点麻烦,现在我将id标记放在最有可能从我的web应用程序中使用的所有web元素上,每当需要时,我都会使用CustomKeyword在脚本中创建对象,我写道: /** * * @param buttonID * @return TestObject representing the newly created control */ @Keyword public T

最初,当我使用Katalon Studio启动web自动化时,我捕获对象,将它们存储在对象存储库中,然后在脚本中使用它们。这有点麻烦,现在我将
id
标记放在最有可能从我的web应用程序中使用的所有web元素上,每当需要时,我都会使用
CustomKeyword
在脚本中创建对象,我写道:

/**
 *
 * @param buttonID
 * @return TestObject representing the newly created control
 */
@Keyword
public TestObject createControl(String controlID){
    TestObject newControl = new TestObject()
    WebUI.modifyObjectProperty(newControl, 'id', 'equals', controlID, true)
    return newControl
}

即使这样做有效,我想知道在对象存储库中不包含任何对象是否是一个好主意。维护对象存储库是一项艰巨的工作,这就是为什么我选择了这种方法,但我对Katalon Studio太陌生,不知道这是否是一个好主意。我在卡塔隆官方文件中找不到任何有关这方面的信息,所以我想在这里问一下。

这取决于你的目的和技能。 保存对象存储库将帮助用户直观地查看对象的存储方式。它还有助于存储多个属性,这些属性可以通过单击包含或排除。这些属性可以由Spy或Record工具生成。
如果您了解编程,那么您的编码方法也会起作用。但是,您必须自己决定定位器。如果选定的定位器不再工作,则必须创建另一个定位器。在对象存储库中,如果id更改,测试人员案例将选择类和其他属性

我也使用您的方法。我通常使用一条线来创建对象:

TestObject myObject = new TestObject().addProperty('css', ConditionType.EQUALS, 'css selector')
对象存储库不能很好地扩展。而且很难维持

卡塔隆论坛上有一些有趣的讨论(,尤其是,但还有更多有趣的讨论要看)


我能想到的缺点是,如果您使用的是页面对象模型,那么应该将控件与测试本身分开。解决方案是将选择器(id、名称、css、xpath或其他)保存在一个单独的文件中(如excel表格)

我理解你的意思,但对象存储库对我来说不适合扩展,它需要太多的维护,因为与其他Katalon项目相比,我的项目规模非常大。我想只要我保持id的一致性,我就不会遇到问题。如果你能保持id的一致性,这是正确的。然而,若你们不能决定那个条规则,开发团队可能会意外地改变它。这就是为什么我不想保留一个对象存储库,这对于一个更大的项目是没有意义的。有一个问题,你创建对象的方式,我应该在哪里添加ID?那么在我的例子中,css是id,css选择器是我想要的id值?是这样吗?当然,这样可能行。如果没有,您也可以执行
.addProperty('css',ConditionType.EQUALS,#yourID')
.Ceck out。
.addProperty('id',ConditionType.EQUALS,'myID')