首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Xpath无法选择标签文本-当另一个元素(如<input> )位于<label>标记之间时

Xpath无法选择标签文本-当另一个元素(如<input> )位于<label>标记之间时
EN

Stack Overflow用户
提问于 2017-05-09 14:58:14
回答 2查看 1.1K关注 0票数 0

Java和Xpath的新手。谷歌和RTFM-编辑相当多,但仍然坚持。公司使用Java框架编写了一个用Java编写的大型has应用程序。使用硒结合黄瓜和Junit进行测试。因此,需要编写大量Xpath表达式。坚持了以下几点.

带有窗体和两个开关()的屏幕及其后面的文本。相关片段。

代码语言:javascript
运行
复制
    <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提到的结束括号错误。

EN

回答 2

Stack Overflow用户

发布于 2017-05-09 15:11:47

我知道您说过您不能更改HTML,但是也许您可以在测试环境上以wickets开发模式运行应用程序?这样,如果我没记错的话,应该呈现wicket:id,这样您就可以更容易地选择元素。

票数 0
EN

Stack Overflow用户

发布于 2017-05-09 15:33:17

您键入的xpath尝试如下:

代码语言:javascript
运行
复制
//label[contains(text(),'Unsafe to delete'] 

除非这只是个错误,否则你漏掉了一个括号。

代码语言:javascript
运行
复制
//label[contains(text(),'Unsafe to delete')] 

xpath应该可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43873253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档