У меня есть переключатели, которые при выборе любого переключателя получают атрибут checked
.
Вот как выглядит HTML:
Моя реализация получения потомка с атрибутом checked
:
public TestObject getCheckedTestObjectFromParent(String parentID){
WebDriver driver = DriverFactory.getWebDriver()
WebElement parentWebElement = driver.findElement(By.id(parentID))
List<WebElement> children = parentWebElement.findElements(By.xpath(".//*"))
println(children.size())
for(int i = 0; i < children.size(); i++){
TestObject childTestObject = getTestObjectFromWebElement(children[i])
if(WebUI.verifyElementHasAttribute(childTestObject, 'checked', 10, FailureHandling.OPTIONAL)){
return childTestObject
}
}
}
Это вспомогательный метод, который я использую для преобразования WebElement
в TestObject
:
public TestObject getTestObjectFromWebElement(WebElement element) {
TestObject object = new TestObject()
object.addProperty("xpath", ConditionType.CONTAINS, getXPathFromElement(element))
return object
}
Помощник для получения xpath
от WebElement
:
protected String getXPathFromElement(WebElement element) {
String elementDescription = element.toString();
return elementDescription.substring(elementDescription.lastIndexOf("-> xpath: ") + 10, elementDescription.lastIndexOf("]"));
}
Мне что-то здесь не хватает или что-то не так с преобразованием WebElement
-> TestObject
? Также возможно ли это с использованием только TestObject или только WebElement? Если бы я мог получить дочерний TestObjects
, содержащий определенные атрибуты, от родительского TestObject
, тогда мне не нужно было бы создавать беспорядок, используя WebElements
.
Изменить
Еще одно изображение HTML, на этот раз с отмеченным первым переключателем. Как видите, второй переключатель больше не имеет атрибута «checked».
checked
, специфичный для Katalon. Если вам достаточно получить соответствующий WebElement, обновите вопрос, и я могу составить ответ на этот вопрос. - person DebanjanB   schedule 21.03.2019