如何在Selenium中仅使用属性定位元素,而不管属性值是什么

时间:2018-04-10 12:11:54

标签: java selenium xpath css-selectors

如何在Selenium中找到只有属性的元素?

DOM中的元素如下:

<div data-test="test" data-app-test="xyz">

我可以按如下方式构建XPath:

//div[@data-app-test="xyz"]

但问题是@ data-app-test可以有动态值,所以我想找到一个包含属性&#34; data-app-test&#34;的元素,但它的值可以是任何值。我怎么能这样做?

5 个答案:

答案 0 :(得分:2)

只需指定属性存在,不要将其值与任何内容进行比较:

//div[@data-app-test]

答案 1 :(得分:1)

您可以使用CSS Selector:

div[data-app-test]

答案 2 :(得分:0)

在性能方面你可以做得很好但是在某些情况下可以说是可靠的方式:

1)找到包含所有<div> s;

的根元素(容器)

2)driver.findElement(containerLocator) .findElements(locatorDiv) .forEach(element -> "yourAttribute".equals(element.getAttribute(attribute)))

使用element.getAttribute(NAME)的主要想法。

另一种方法就是使用XPath进行选择。

例如,//node[not(@*)]这应该返回没有属性的所有元素。

答案 3 :(得分:0)

您可以使用以下方式进行检索:

@getter

答案 4 :(得分:0)

@ *是attribute :: *的缩写,并选择上下文节点的所有属性:

  //div[@*]