按属性查找元素

问题描述 投票:0回答:4

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

java selenium selenium-webdriver
4个回答
116
投票

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


38
投票

我不明白你的要求:

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

如果这只是您的“不正确”假设,那么 XPath 就是“完美”选项! webDriver.findElements(By.xpath("//element[@attribute='value']")) 当然,您需要将

element
attribute

value
替换为您的真实姓名。您还可以使用通配符查找“任何元素”:

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

改用 CSS 选择器:

17
投票

编辑:CSS 选择器而不是 XPath


根据文档:


1
投票
By.id

通过 ID 属性定位元素。该定位器使用 CSS 选择器

*[id='$ID']

不是
document.getElementById
。其中 id 是要搜索的 ID 因此您可以使用下面的代码来搜索具有任何给定属性作为 ID 和值的 DOM 元素

By.id("element[attribute='attribute-value']");

© www.soinside.com 2019 - 2024. All rights reserved.