java 按属性查找元素

vbkedwbf  于 2023-06-04  发布在  Java
关注(0)|答案(4)|浏览(134)

我试图找到一个属性的元素。好吧,我可以在Selenium中找到具有Id、tagName、Xpath和所有其他预定义方法的元素。但是,我正在尝试编写一个专门返回WebElement的方法,给定Attribute名称和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不是一种选择,那么是否有其他更好的方法来实现这一点?

t40tm48m

t40tm48m1#

你可以用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

xu3bshqb

xu3bshqb2#

我不明白你的要求:
假设XPath不是一个选项…
如果这只是您的一个不正确的假设,那么XPath是一个完美的选择!

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

当然,您需要将elementattributevalue替换为您的实际名称。您也可以使用通配符查找“任何元素”:

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

bvk5enib3#

使用CSS选择器:

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

编辑:CSS选择器代替XPath

mwg9r5ms

mwg9r5ms4#

根据文件:
By.id通过ID属性定位元素。此定位器使用CSS选择器*[id='$ID'],* 而不是 * document.getElementById。其中id是要搜索的ID
因此,您可以使用下面的代码搜索具有任何给定属性(ID和值)的DOM元素

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

相关问题