浏览getAttribute的java文档。无法理解上述提及的要点:
最后,以下通常错误大写的属性/属性 名称按预期评估:" class" "只读"
有人可以确认webElement.getAttribute("class")
是否应该返回元素的类名吗?
修改:自己尝试
System.out.println("element " + webElement.getAttribute("class"));
我正在
org.openqa.selenium.NoSuchElementException
注意:元素确实存在于屏幕上,因为我可以在元素上成功执行操作:
webElement.click(); //runs successfully
代码:
WebElement webElement = <findElement using some locator strategy>;
System.out.println("element " + webElement.getAttribute("class"));
答案 0 :(得分:1)
因此问题的答案在@SergeyTikhomirov的appium / java-client问题列表中的GitHub上得到了解答。对此的简单解决方案是访问className属性,如下所示:
webElement.getAttribute("className")); //instead of 'class' as mentioned in the doc
此处的方法核心实施:AndroidElement
答案 1 :(得分:0)
根据this answer,是的,你做得对。您的org.openqa.selenium.NoSuchElementException
被抛出,因为selenium无法找到元素本身。
您发布的关于webElement.click()
实际工作的旁注很遗憾未包含在您发布的代码中。由于它不是实际问题的一部分,我在没有解决的情况下留下这个答案。
答案 2 :(得分:0)
public String getStringAttribute(final String attr)
throws UiObjectNotFoundException, NoAttributeFoundException {
String res;
if (attr.equals("name")) {
res = getContentDesc();
if (res.equals("")) {
res = getText();
}
} else if (attr.equals("contentDescription")) {
res = getContentDesc();
} else if (attr.equals("text")) {
res = getText();
} else if (attr.equals("className")) {
res = getClassName();
} else if (attr.equals("resourceId")) {
res = getResourceId();
} else {
throw new NoAttributeFoundException(attr);
}
return res;
}