我无法使用XPATH找到子元素的完全匹配

时间:2015-08-12 10:23:49

标签: html selenium xpath automation

我的要求是将字符串发送到webdriver并将字符串与单选按钮的标签匹配。

<input type="radio" onclick="Element.show('indicator_radio_term_190');render_selected_term('190','1','275467','AQCB Number')" value="190" name="radio_190"/>
<input type="radio" onclick="Element.show('indicator_radio_term_179');render_selected_term('179','1','275467','AQCB Number (iLink)')" value="179" name="radio_179"/>

以上是两个名为“AQCB Number”和“AQCB Number (iLink)”的单选按钮的结构。因此,当我移交字符串“AQCB Number”时,我想找到具有完全相同文本的单选按钮。

当我使用//input[contains(@onclick,'AQCB Number')]获取带有标签的xpath时,我得到两个抛出异常的结果。有没有办法,我可以找到完全匹配,仍然使用包含? “AQCB Number”和“AQCB Number (iLink)”是单选按钮的标签。

2 个答案:

答案 0 :(得分:0)

也包括单引号:

driver.findElement(By.xpath("//input[contains(@onclick, \"'AQCB Number'\")]"));

driver.findElement(By.xpath("//input[contains(@onclick, '\'AQCB Number\'')]"));

答案 1 :(得分:0)

关于您的问题并不是专门针对如何区分您的AQCB条目,而是如何匹配您想要的确切孩子

我建议使用value或name属性以更易读的方式获取匹配

首先按名称

driver.findElement(By.name("radio_190"));

按值

driver.findElement(By.xpath("//input[@value = '190']"));

更新

在OP澄清之后,他的实际要求是什么,那么@peetya的解决方案当然是正确的:

您只需要使用onclick事件的js代码中的引号:

driver.findElement(By.xpath("//input[contains(@onclick, '\'AQCB Number\'')]"));

更进一步,如果你要移交一个字符串“radioButtonName”,你应该这样做:

String searchString = "'" + radioButtonName + "'";

driver.findElement(By.xpath("//input[contains(@onclick, '" + searchString + "')]"));