【问题标题】:I am not able to find an exact match for child elements using XPATH我无法使用 XPATH 找到子元素的完全匹配
【发布时间】:2015-11-04 21:38:27
【问题描述】:

我的要求是将一个字符串发送到 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)”是单选按钮的标签。

【问题讨论】:

    标签: html selenium xpath automation


    【解决方案1】:

    也包括单引号:

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

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

    【讨论】:

      【解决方案2】:

      关于您的问题不是具体关于如何区分您的 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 + "')]"));
      

      【讨论】:

      • 我的要求是将字符串发送到 webdriver 并将字符串与单选按钮的标签匹配。该值不是串联的,对我没有任何帮助。
      • 那么当然最好将这些基本信息放入您的问题中!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-14
      • 2020-04-09
      • 1970-01-01
      • 1970-01-01
      • 2017-07-19
      • 1970-01-01
      相关资源
      最近更新 更多