【发布时间】:2018-11-11 11:00:23
【问题描述】:
我正在使用 Selenium WebDriver。我面临动态更改 ID 的问题。我浏览过一些帖子,例如Handle elements that have changing ids all the time through Selenium Webdriver,但没有找到可以帮助我的解决方案。
在 XPath 中包含 start-with 和 contains 无济于事,因为有很多以相似文本开头的元素和 id 不断变化。请参阅下面的HTML 以获得更清晰的信息。
<mat-option _ngcontent-c1="" class="__mat-option mat-option ng-star-inserted"
role="option" tabindex="0" id="mat-option-4"
aria-selected="false" aria-disabled="false">
<span class="mat-option-text">
<i _ngcontent-c1="" class="material-icons">description</i>
<span _ngcontent-c1="" style="padding-left: 8px">Campaign Details</span>
</span>
<div class="mat-option-ripple mat-ripple" mat-ripple=""></div>
</mat-option>
- 请注意上面 HTML 中的 ID 是动态的并且不断变化。
- 像这样具有相同类名的元素很少。
- 还有几个以
mat-option-开头的元素。 - 唯一独特的是
<span>中的文字。
我尝试了driver.findElement(By.xpath(".//span[contains(text(), 'Campaign Details']"));,但不适合我。
【问题讨论】:
-
您遇到的错误是什么?
-
请澄清你想要这个元素
<span _ngcontent-c1="" style="padding-left: 8px">Campaign Details</span>或其祖先:<mat-option> -
是的,想找
Campaign Details元素。
标签: java selenium selenium-webdriver xpath css-selectors