我正在尝试查找具有属性的元素。好吧,我可以在 Selenium 中找到带有 Id、tagName、Xpath 和所有其他预定义方法的元素。但是,我正在尝试编写一个专门返回 WebElement 的方法,并将属性名称和值作为输入。
List<WebElement> elements = webDriver.findElements(By.tagName("Attribute Name"));
for(WebElement element : elements){
if(element.getText().equals("Value of Particular Attribute")){
return element;
}
else{
return null;
}
}
假设 XPath 不是一个选项,还有其他更好的方法吗?
您可以使用 CSS 轻松完成此任务。
公式为:
element[attribute='attribute-value']
如果你有的话,
<a href="mysite.com"></a>
您可以使用以下方式找到它:
By.cssSelector("a[href='mysite.com']");
这可以使用任何可能的属性。
此页面提供了有关如何制定有效的 css 选择器以及匹配其属性的良好信息:http://ddavison.io/2014/02/18/ effective-css-selectors
我不明白你的要求:
假设 XPath 不是一个选项...
如果这只是您的“不正确”假设,那么 XPath 就是“完美”选项!
webDriver.findElements(By.xpath("//element[@attribute='value']"))
当然,您需要将
element
、
attribute
、
value
替换为您的真实姓名。您还可以使用通配符查找“任何元素”:webDriver.findElements(By.xpath("//*[@attribute='value']"))
改用 CSS 选择器:
编辑:CSS 选择器而不是 XPath
根据文档:
By.id
通过 ID 属性定位元素。该定位器使用 CSS 选择器
*[id='$ID']
,
不是
document.getElementById
。其中 id 是要搜索的 ID
因此您可以使用下面的代码来搜索具有任何给定属性作为 ID 和值的 DOM 元素By.id("element[attribute='attribute-value']");