Selenium Automation:在JAVA中使用selenium识别唯一的webelements集

时间:2018-06-04 20:34:43

标签: java selenium-webdriver

我有这样的HTML:

"<div **id="xx-abc-list-1"**>
<button ng-reflect-class-base="icon component" **id="xx-abc-list-button-2"**><span class="mat-button-wrapper">
</div>

<div **id="xx-abc-list-2"**>
<button ng-reflect-class-base="icon component" **id="xx-abc-list-button-2"**><span class="mat-button-wrapper">
</div>"

现在,我想获得以id = xx-abc-list-结尾的所有元素的列表,所以我使用了下面的代码。

@FindBy(xpath = "//*[contains(@id,'xx-abc-list-')]");
List<WebElement>;

但是考虑到其他元素(xx-abc-list-button-),这给了我4个计数。

我应该在上面的代码中修改什么才能获得我需要的2个值?

1 个答案:

答案 0 :(得分:4)

@FindBy(xpath = "//*[contains(@id,'xx-abc-list-')]");

上面XPath中的*表示任何元素(它是通配符)。在您的情况下,您只需要DIV s,因此您可以将其更改为

@FindBy(xpath = "//div[contains(@id,'xx-abc-list-')]");

它应该能得到你想要的东西。

在一个更复杂的场景中,你想要两个但不是四个而且所有都是DIV,你仍然可以使用&#34;不包含()&#34;排除包含&#34; -button - &#34;。

的ID
@FindBy(xpath = "//*[contains(@id,'xx-abc-list-')][not(contains(@id,'-button-'))]")

How to use not contains() in xpath?