Java和Xpath的新手。谷歌和RTFM-编辑相当多,但仍然坚持。公司使用Java框架编写了一个用Java编写的大型has应用程序。使用硒结合黄瓜和Junit进行测试。因此,需要编写大量Xpath表达式。坚持了以下几点.
带有窗体和两个开关()的屏幕及其后面的文本。相关片段。
<label>
<input id="idf1" name="removeConditionViaTreeStep:resultsRadioGroup" value="radio3" checked="checked" type="radio">
Safe to delete
</label>
<label>
<input id="idf2" name="removeConditionViaTreeStep:resultsRadioGroup" value="radio4" type="radio">
Unsafe to delete
</label>注意:使用Wicket框架意味着每次应用程序运行时,属性id和值都是/可以不同的,因此不能使用它们。也不能更改html。
计划我想通过使用标签文本作为uniq选择器来选择一个特定的切换(并模拟单击/选择它),但是事实上,在标签之间有..。给我带来了麻烦。在干净标签的情况下,我可以选择一个没有问题的标签。在这种情况下,无法让//labelcontains(text(),'Unsafe‘)这样的东西工作。
放弃了,朝着B计划去了,
使用firepath对firebug进行测试,并得出如下结果: //input@name='removeConditionViaTreeStep:resultsRadioGroup‘,这将导致两个匹配的firepath。我希望用像2这样的东西来选择第二个按钮,但是我想不出来。
计划C-求助于Java和Xpath有效.
列表元素= findElementsByXpath("//input@name='removeConditionViaTreeStep:resultsRadioGroup'");elements.get(1) //选择第二个切换。
有这样的感觉"//labelcontains(text(),‘不安全地删除’)“不能工作,因为所有的东西都是流的,而且selenium的Webdriver没有任何东西保存在内存中。所以这个元素破坏了流之类的东西.
也许有人可以给出一些提示和指点,甚至可以给出A和B计划的解决方案。
编辑更正了Bill提到的结束括号错误。
发布于 2017-05-09 15:11:47
我知道您说过您不能更改HTML,但是也许您可以在测试环境上以wickets开发模式运行应用程序?这样,如果我没记错的话,应该呈现wicket:id,这样您就可以更容易地选择元素。
发布于 2017-05-09 15:33:17
您键入的xpath尝试如下:
//label[contains(text(),'Unsafe to delete'] 除非这只是个错误,否则你漏掉了一个括号。
//label[contains(text(),'Unsafe to delete')] xpath应该可以工作。
https://stackoverflow.com/questions/43873253
复制相似问题