一尘不染

通过Selenium Webdriver处理始终具有更改ID的元素

selenium

我正在运行脚本来自动化测试用例,并遇到了这个独特的问题。我已经检测并使用了元素ID来实现点击等目的。但是,这些ID突然改变了,该脚本不再起作用。另一个奇怪的是,这些ID在Chrome中检查时与脚本中的ID相同,但在Firefox驱动程序浏览器中却不同。

用于测试驱动程序的Firebug:-

<p class="description" onclick="selectElementTextListForIE(this,'tile29', 'tile19');selectElementTextList(this,'tile29', '')" id="tile29_span_0_0">
                                                            Platinum
                                                        </p>

相同元素的Chrome检查器:-

<p class="description" onclick="selectElementTextListForIE(this,'tile20', 'tile19');selectElementTextList(this,'tile20', '')" id="tile20_span_0_0">
                                                            Platinum
                                                        </p>

另外,检测运行时生成ID的元素的最佳策略是什么。我什至尝试使用XPATH,但是它也包含id的引用,例如。@ id =“ tile276_input

任何帮助将不胜感激。

谢谢。

阿比舍克


阅读 402

收藏
2020-06-26

共1个答案

一尘不染

您可以为此使用CSS。对于您的元素,它看起来像:

<* id="tile276_input" />

您需要做的是找出正在发生的变化。我认为这是两者之间的数字。如果是,那么您的选择器将类似于:

By.cssSelector("*[id^='tile'][id$='input']")

这将寻找任何有一个ID是“有开始tile和“有端” input。在我们的情况下,"tile276_input"匹配。

如果您需要更多信息,请参阅本文

2020-06-26