我正在尝试使用Attribute查找元素。好吧,我可以在Selenium中找到带有Id,tagName,Xpath和所有其他预定义方法的元素。但是,我正在尝试编写一个专门返回WebElement的方法,给定Attribute name和Value作为输入。
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不是一个选项,还有其他更好的方法吗?
答案 0 :(得分:49)
您可以使用CSS轻松完成此任务。
公式为:
element[attribute='attribute-value']
所以,如果你有,
<a href="mysite.com"></a>
您可以使用以下方式找到它:
By.cssSelector("a[href='mysite.com']");
这可以使用任何可能的属性。
此页面提供了有关如何制定有效的css选择器以及匹配其属性的详细信息:http://ddavison.io/css/2014/02/18/effective-css-selectors.html
答案 1 :(得分:19)
我不明白你的要求:
假设XPath不是一个选项......
如果这只是错误的假设,那么XPath就是完美的选项!
webDriver.findElements(By.xpath("//element[@attribute='value']"))
当然,您需要将element
,attribute
和value
替换为您的实际名称。您还可以找到&#34;任何元素&#34;使用通配符:
webDriver.findElements(By.xpath("//*[@attribute='value']"))
答案 2 :(得分:12)
改为使用CSS选择器:
List<WebElement> elements = webDriver.findElements(By.cssSelector("*[attributeName='value']"));
编辑:CSS选择器而不是XPath
答案 3 :(得分:0)
根据文档:
By.id
通过ID属性定位元素。此定位器使用CSS选择器
*[id='$ID']
,不是 document.getElementById
。 id是要搜索的ID
因此您可以使用以下代码搜索具有任何给定属性作为ID和值的DOM元素
By.id("element[attribute='attribute-value']");