有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Selenium自动化:在JAVA中使用Selenium识别唯一的WebElement集

我有这样一个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列表按钮),这也给了我4个计数

我应该在上面的代码中修改什么,以便只得到我需要的两个值


共 (1) 个答案

  1. # 1 楼答案

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

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

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

    它会让你得到你想要的

    在一个更复杂的场景中,您想要两个而不是四个,并且所有的都是DIV的,您仍然可以使用“not contains()”来排除包含“-button-”的ID

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

    How to use not contains() in xpath?