我在单选按钮组中的单选按钮旁边有一些杂散文本。我尝试使用xpath和watir获取它,但我没有运气。这是一些HTML示例
<html>
<head></head>
<body>
<input type="radio" name="options" value="No">No <br />
<input type="radio" name="options" value="Yes">Yes <br />
<input type="radio" name="options" value="Maybe">Maybe <br />
</body>
</html>
我可以使用xpath by
获取所选的单选按钮selectedRadio = browser.radio(:xpath,"//input[@checked and @name='options']")
如何选择相应的单选按钮?我也尝试使用Watir获取它,但是.text方法不适用于Watir :: RadioButton对象,因为文本是杂散文本所以这是真的。
提前致谢。
答案 0 :(得分:2)
给出的HTML不是格式良好的XML,所以我认为表达式将取决于Waitr如何解析输入。如果它认为文本是input
元素的子元素,就像这样:
<input type="radio" name="options" checked="checked" value="No">No </input><br />
<input type="radio" name="options" value="Yes">Yes </input><br />
<input type="radio" name="options" value="Maybe">Maybe </input><br />
然后使用这个表达式:
//input[@checked and @name='options']/text()
另一方面,如果它自动关闭input
并将文本视为兄弟,请执行以下操作:
<input type="radio" name="options" checked="checked" value="No"/>No <br />
<input type="radio" name="options" value="Yes"/>Yes <br />
<input type="radio" name="options" value="Maybe"/>Maybe <br />
然后使用以下表达式:
//input[@checked and @name='options']/following-sibling::text()[1]
我的猜测是第二个是正确的,因为你已经说过.text
没有用。
答案 1 :(得分:0)
要求开发人员通过ID值将与单选按钮关联的文本放在与按钮关联的label内,使页面更易于测试
<form>
<input type="radio" name="sex" id="male" />
<label for="male">Male</label>
<br />
<input type="radio" name="sex" id="female" />
<label for="female">Female</label>
</form>
然后,您可以获取所选按钮的ID,并轻松找到相关的标签文本。
说真的,这对他们来说可能要比你必须处理草率的页面代码容易得多。它还为它们提供了更多格式化选项(通过CSS),以便在标签容器中包含该文本。赢得四处游戏。