处理动态id和类

时间:2013-11-18 06:19:45

标签: selenium web driver

我正在使用selenium来测试Web应用程序,id和类总是动态地改变。所以我无法给出正确的标识,是否有可能在运行时获取元素的id并且还有其他处理这种情况的方法。

2 个答案:

答案 0 :(得分:1)

这取决于id是完全随机的还是id的某些部分保持不变。如果是,那么cssSelector是显而易见的选择

driver.findElement(By.cssSelector("div[id*=somePart]");

其中id*表示id包含。如果您无法使用此方法,则必须使用xpathcssSelectors来追踪您的元素。 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和类不可靠时使用它。