如何使用Selenium / Java选中此复选框

时间:2017-11-14 14:47:58

标签: selenium xpath

有人可以帮我创建一条允许我点击此复选框的路径吗?

我有一个页面,其中包含大约50个这样的框,其中唯一的区别是文本(在本例中为Answer Flow Designer)。我正在创建一个脚本数组的脚本,并通过它迭代选择每个匹配的复选框。

<td class="normal">                                                                                        
    <input name="1.48.1.3.2.6.1.1.57.3" type="checkbox" value="0">Answer Flow Designer
</td>

4 个答案:

答案 0 :(得分:2)

您可以使用以下内容来匹配所需的input

//td[contains(., "Answer Flow Designer")]/input

请注意,您无法使用

//input[contains(text(), "Answer Flow Designer")]

由于input节点不能包含任何子节点(仅限属性),"Answer Flow Designer"实际上是td

的子文本节点

答案 1 :(得分:0)

这取决于整个html看起来如何说出

现在,您首先需要获取该用途的td标记内的输入标记数

     <td class="normal">                                                                                        

     <input name="1.48.1.3.2.6.1.1.57.3" type="checkbox" value="0">Answer 
     Flow Designer/>
     <input name="anything new" type="checkbox" value="0">Another text/>
     <input name="anything new" type="checkbox" value="0">Another text/>
     <input name="anything new" type="checkbox" value="0">Another text/>
     .
     .
     and last 50th 
     <input name="anything new" type="checkbox" value="0">Another text/>
     </td>

如下所示迭代它们并从每个元素中获取文本

        List<WebElments> tdtagselements=driver.findElement(By.xpath("//td[1]//input")); 

      for(int i=1;i<tdtagselements.size();i++){
      String textInputtag=driver.findelement(by.xpath("//td[1]//input["+i+"]")).gettext();
}

使用此字符串与要验证文本的文本进行比较 让我知道您的HTML代码究竟是什么样的

答案 2 :(得分:-1)

//input[@type='checkbox' and contains(text(),'Answer Flow Designer')]

答案 3 :(得分:-1)

由于此复选框具有名称,您可以使用它。

driver.findElement(By.name("1.48.1.3.2.6.1.1.57.3")).click();

如果name不是唯一的,并且您希望通过以下文本查找元素,则可以使用

driver.findElement(By.xpath("//*[contains(., 'Answer Flow Designer')]//preceding-sibling::input")).click();