按属性查找元素

2022-08-31 16:02:24

我正在尝试找到一个带有属性的元素。好吧,我可以在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不是一个选项,那么还有其他更好的方法来做到这一点吗?


答案 1

您可以使用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


答案 2

我不明白你的要求:

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

如果这只是您的错误假设,那么XPath是完美的选择!

webDriver.findElements(By.xpath("//element[@attribute='value']"))

当然,您需要将 、 和 替换为您的真实姓名。您还可以使用通配符查找“任何元素”:elementattributevalue

webDriver.findElements(By.xpath("//*[@attribute='value']"))

推荐