我正在使用selenium来测试Web应用程序,id和类总是动态地改变。所以我无法给出正确的标识,是否有可能在运行时获取元素的id并且还有其他处理这种情况的方法。
答案 0 :(得分:1)
这取决于id是完全随机的还是id的某些部分保持不变。如果是,那么cssSelector
是显而易见的选择
driver.findElement(By.cssSelector("div[id*=somePart]");
其中id*
表示id包含。如果您无法使用此方法,则必须使用xpath
或cssSelectors
来追踪您的元素。 XPath示例是here,CSS选择器看起来像这样
By.cssSelector("boyd table input");
答案 1 :(得分:0)
我强烈建议您通过XPath定位元素 - 但需要注意的是,您要使XPath健壮,而不仅仅是使用浏览器的开发人员工具“复制”xpath。 XPath非常容易学习。您可以使用XPath在DOM中上下移动,并根据文本或属性识别元素。
例如,您可能需要单击一个按钮,该按钮的跨度包含按钮上显示的文本:
<div class="btn-row random-generated-number-1234897395">
...
<button id="random-generated-number-239487340924257">
<span>Click Here!</span>
</button>
...
</div>
然后你可以像这样使用xpath:
//div[contains(@class, 'btn-row')]//button/span[text()='Click Here!']/..
(最后的/..
从跨度向上移动到按钮。)
XPath功能强大,灵活且易于学习。当id和类不可靠时使用它。