我有这样的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个值?
答案 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;。
@FindBy(xpath = "//*[contains(@id,'xx-abc-list-')][not(contains(@id,'-button-'))]")