我正在尝试为我的wicket(框架工作)基础Web应用程序开发自动化测试脚本。
我正在使用Selenium 2.44 jars(插件)和Firefox 23版本,还使用Firefox插件,Firebug用于检查Web元素,FirePath用于获取Web元素的xpath。但我面临的问题是我的Web应用程序中的HTML ID是动态的,这意味着每次更改时,因此xpath也会发生变化,而在查找元素时我会收到“NoSuchElementException”。
答案 0 :(得分:3)
在DebugSettings中设置setComponentPathAttributeName()。这将导致wicket将其路径转换为html。只有在更改组件层次结构时才应更改路径。
public void init() {
super.init();
getDebugSettings().setComponentPathAttributeName("wicketpath");
}
这会导致你的html看起来像:
<form wicket:id="form" id="form1" wicketpath="form" method="post" action="./?0-3.IFormSubmitListener-form">
<div wicket:id="childField" wicketpath="form_childField"></div>
</form>
答案 1 :(得分:0)
如果您提供网页的html源代码段,那就太好了。 现在我可以建议,你可以尝试一些动态的Xpath函数,如contains(),following()等。 仅举例如: By.xpath(&#34; // div [contains(text(),&#39; some text&#39;)并包含(@class,&#39;整个类名或类名的某些部分,而不是改变它的动态&#39;)/ follow :: *&#34;) 要么 By.xpath(&#34; // div [contains(text(),&#39; some text&#39;)和contains(@class,&#39;整个类名或类名的某些部分,而不是改变它的动态&#39;] / following :: div&#34;)
像这样。