如何在 Katalon Studio 中编写动态定位器?
How to write Dynamic locator in Katalon Studio?
我在使用动态定位器时遇到问题。
这是我的 Xpath://*["@id=row"+${index}+"gridAlerts_AssignedToMe']/div[4]/a"
Name: Xpath
Condition: Equals
Value: id("row${index}gridAlerts_AssignedToMe")/div[4]/a
Detect By Property: Check box is checked.
这是我的脚本:
for (def index : (0..5)) {
def val = WebUI.getText(findTestObject('HomePage/AlertIdLocators', [('{index}') : index]))
}
我希望每次迭代时索引值都应替换为 0 到 5。
但这并没有发生。这是我的日志
11-30-2017 11:42:12 AM - [FAILED] - Test Cases/MyAlerts_LoopStatement FAILED because (of) Unable to get text of object 'Object Repository/HomePage/AlertIdLocators' (Root cause: com.kms.katalon.core.webui.exception.WebElementNotFoundException: Web element with id: 'Object Repository/HomePage/AlertIdLocators' located by 'By.xpath: id("row${index}gridAlerts_AssignedToMe")/div[4]/a' not found)
在您的情况下,这不是正确的 Xpath。之所以最后的Xpath还是没有把${index}变量解析成实际的数字,是因为你用双引号把它括起来了,所以你的Xpath应该是这样的:
id("row$"+{index}+"gridAlerts_AssignedToMe")/div[4]/a
这里是正确使用参数化 TestObject 的示例:
int rowIndex = 1
TestObject myObject = findTestObject('Object Repository/GENERICI/Tabella Risultati Ricerca GENERICA/voceDiAzione_byRow_byCol_byActionName',[('row'):rowIndex,('col'):8,('action'):'Elimina'])
TestObject 定义
在你的例子中,xpath 值是这样的:id("row${index}gridAlerts_AssignedToMe")/div[4]/a
我在使用动态定位器时遇到问题。
这是我的 Xpath://*["@id=row"+${index}+"gridAlerts_AssignedToMe']/div[4]/a"
Name: Xpath
Condition: Equals
Value: id("row${index}gridAlerts_AssignedToMe")/div[4]/a
Detect By Property: Check box is checked.
这是我的脚本:
for (def index : (0..5)) {
def val = WebUI.getText(findTestObject('HomePage/AlertIdLocators', [('{index}') : index]))
}
我希望每次迭代时索引值都应替换为 0 到 5。
但这并没有发生。这是我的日志
11-30-2017 11:42:12 AM - [FAILED] - Test Cases/MyAlerts_LoopStatement FAILED because (of) Unable to get text of object 'Object Repository/HomePage/AlertIdLocators' (Root cause: com.kms.katalon.core.webui.exception.WebElementNotFoundException: Web element with id: 'Object Repository/HomePage/AlertIdLocators' located by 'By.xpath: id("row${index}gridAlerts_AssignedToMe")/div[4]/a' not found)
在您的情况下,这不是正确的 Xpath。之所以最后的Xpath还是没有把${index}变量解析成实际的数字,是因为你用双引号把它括起来了,所以你的Xpath应该是这样的:
id("row$"+{index}+"gridAlerts_AssignedToMe")/div[4]/a
这里是正确使用参数化 TestObject 的示例:
int rowIndex = 1
TestObject myObject = findTestObject('Object Repository/GENERICI/Tabella Risultati Ricerca GENERICA/voceDiAzione_byRow_byCol_byActionName',[('row'):rowIndex,('col'):8,('action'):'Elimina'])
TestObject 定义
在你的例子中,xpath 值是这样的:id("row${index}gridAlerts_AssignedToMe")/div[4]/a