按属性查找元素

Kis*_*ala 33 java selenium selenium-webdriver

我试图找到一个属性的元素.好吧,我可以在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;
    }
}
Run Code Online (Sandbox Code Playgroud)

假设XPath不是一个选项,还有其他更好的方法吗?

dda*_*son 58

您可以使用CSS轻松完成此任务.

公式是:

element[attribute='attribute-value']
Run Code Online (Sandbox Code Playgroud)

所以,如果你有,

<a href="mysite.com"></a>
Run Code Online (Sandbox Code Playgroud)

您可以使用以下方式找到它

By.cssSelector("a[href='mysite.com']");
Run Code Online (Sandbox Code Playgroud)

这可以使用任何可能的属性.

此页面提供了有关如何制定有效的css选择器以及匹配其属性的详细信息:http://ddavison.io/css/2014/02/18/effective-css-selectors.html


SiK*_*ing 21

我不明白你的要求:

假设XPath不是一个选项......

如果您只是一个不正确的假设,那么XPath是完美的选择!

webDriver.findElements(By.xpath("//element[@attribute='value']"))
Run Code Online (Sandbox Code Playgroud)

当然,你需要更换element,attributevalue与你的实际名称.您还可以使用通配符找到"任何元素":

webDriver.findElements(By.xpath("//*[@attribute='value']"))
Run Code Online (Sandbox Code Playgroud)

  • @AlmirCampos 尽管如此,我发现答案很有用。我问自己:这个答案对我有帮助吗?对其他人也有帮助吗?对我来说,答案是“是”。 (4认同)
  • 被否决是因为该问题明确声明“Xpath 不是一个选项”。所以,答案不符合问题的要求。 (2认同)

小智 12

改为使用CSS选择器:

List<WebElement> elements = webDriver.findElements(By.cssSelector("*[attributeName='value']"));
Run Code Online (Sandbox Code Playgroud)

编辑:CSS选择器而不是XPath