![](/img/trans.png)
[英]Using XPath, how can I get an exact match at tag without preceding text?
[英]I am not able to find an exact match for child elements using XPATH
我的要求是将一个字符串发送到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号”移交给我时,我想找到带有完全相同的文本的单选按钮。
当我使用//input[contains(@onclick,'AQCB Number')]
来获取带有标签的xpath时,我都得到了抛出异常的两个结果。 有没有一种方法可以找到完全匹配并仍然使用包含? “ AQCB Number
”和“ AQCB Number (iLink)
”是单选按钮的标签。
也包括单引号:
driver.findElement(By.xpath("//input[contains(@onclick, \"'AQCB Number'\")]"));
要么
driver.findElement(By.xpath("//input[contains(@onclick, '\'AQCB Number\'')]"));
关于您的问题不是专门关于如何区分您的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 + "')]"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.