selenium - 如何使用 Katalon Studio 通过 Selenium 在子 WebElements 列表中找到具有“checked”属性的 webelement
问题描述
I have radio buttons that when either radio button is selected, it gets a checked
attribute.
这是 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
}
}
}
这是我用于将 a 转换WebElement
为 a的辅助方法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']")
parentWebElement.findElement(By.xpath(".//*[@checked='checked']")
将找到具有该属性的元素checked = 'checked'
请注意,不再需要列表,因为一次只能有 1 个选中的单选按钮。
执行
public TestObject getCheckedTestObjectFromParent(String parentID){
WebDriver driver = DriverFactory.getWebDriver()
WebElement parentWebElement = driver.findElement(By.id(parentID))
//there is only 1 checked child at a time, so there is no need for a list
WebElement checkedChild = parentWebElement.findElement(By.xpath(".//*[@checked='checked']"))
//convert the WebElement to a TestObject and return
return getTestObjectFromWebElement(checkedChild)
}
推荐阅读
- python-3.x - 如何打印出具体的索引?
- c# - 使用字典而不是 switch 语句
- excel - 按年份排序
- html - 如何将图像添加到 HTML/CSS Shopify 的标题中?
- c - 在二维数组中搜索有效方向
- macros - 在 Julia 的宏生成宏中转义表达式
- javascript - 请解释函数 hasCharacters() 如何在内部工作?
- tensorflow - Keras 模型保存和加载:ValueError:找不到匹配的函数来调用从 SavedModel 加载
- java - 将 ForkJoinPool 与 AsyncHttpClient 一起使用 - 有意义吗?
- visual-studio-code - 如何在显示修复菜单中为选择上一个/下一个创建 VS Code 快捷方式?