按属性查找元素

时间:2014-10-10 16:45:32

标签: java selenium selenium-webdriver

我正在尝试使用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不是一个选项,还有其他更好的方法吗?

4 个答案:

答案 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']"))

当然,您需要将elementattributevalue替换为您的实际名称。您还可以找到&#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']");