Java dev之间并且新到Xpath时。谷歌搜索和RTFM编辑相当多,但卡住了。公司使用Java Wicket框架以Java编写大型网络应用程序。将Selenium与Cucumber和Junit结合使用进行测试。因此需要编写大量的Xpath表达式。 卡住以下。Xpath。无法选择标签文本 - 当<input>之类的其他元素位于<label>标签
一个窗体和两个切换()和它后面的文本的屏幕。相关片段。
<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。
A计划 我想选择一个特定的触发(和模拟点击/选择它)通过使用标签文本作为uniq的选择,但事实是,标签之间有..给我的问题。在干净的标签情况下,我可以毫无问题地选择某个标签。 在这种情况下,无法获取// label [contains(text(),'Unsafe to delete')]等工作。
放弃了,去了B计划。
使用firepath插件Firebug的测试,并具有以下想出了://输入[@名称=“removeConditionViaTreeStep:resultsRadioGroup”] 这导致firepath在两场比赛中。我希望使用类似[2]的选择第二个切换,但无法弄清楚。
C计划 - 求助于Java和Xpath。
List elements = findElementsByXpath(“// input [@ name ='removeConditionViaTreeStep:resultsRadioGroup']”); elements.get(1)//选择第二个切换。
有这种感觉“//标签[包含(text(),'不安全删除')]”不起作用,因为一切都流式传输,硒的Webdriver没有任何东西存储在内存中。因此,元件切断流或类似的东西......
也许有人可以给一些提示和指针或者甚至计划A和B液
编辑矫正右括号作为错字比尔Hileman提到。
尝试'“//标签[normalize-space()='不安全删除']”' – Andersson
你试过类似'元素的东西。getAtrribute(“textContent”);' – kushal