我正在为客户做一个项目,他们要升级到Siebel Open UI。通过这次升级,他们还想开始实现Selenium。我们目前面临的问题,或者一旦实现将面临的问题是,每次构建时,Siebel中HTML元素的ID/name都会发生变化。因为我们正在讨论很多视图和applet,所以每次手动更改代码并不是一个好的解决方案。
这个问题有什么好的解决方案?提供的一个解决方案是一个关联表,我们可以在其中跟踪ID的变化。
在这种情况下,Xpath也不是一个好的选择,因为视图和applet的结构很复杂。我建议你看看CSS选择器。它们比XPath更快,也不那么脆弱。对于动态的ID/名称,通常至少有一部分ID是静态的。
例如,<a id="somestatictext_12345">...
,其中"12345"是动态生成的数字。在这种情况下,你可以使用像
这样的CSS选择器driver.findElement(By.cssSelector("[id^='somestatictext']"));
例子"[id^='somestatictext']" - ID begins with "somestatictext"
"[id$='somestatictext']" - ID ends with "somestatictext"
"[id*='somestatictext']" - ID contains "somestatictext"
要了解更多信息,请查看这个CSS选择器参考