无法使用xpath根据其旁边的名称识别复选框

时间:2018-03-29 10:03:52

标签: selenium selenium-webdriver xpath

我想根据使用CheckBox给出的名称来识别xpath,但是无法直到该文字唯一到达。

html代码如下。如何获取html中提到的'text1'或'text2'的动态xpath?

<html>
<body>
<div class="section-content">
<div>
<input class="cls" type="checkbox"/>
 text1        
</div>
</div>

<div class="section-content">
<div>
<input class="cls" type="checkbox"/>
text2        
</div>
</div>

<div class="section-content">
<div>
<input class="cls" type="checkbox"/>
text3        
</div>
</div>

<div class="section-content">
<div>
<input class="cls" type="checkbox"/>
 text4        
</div>
</div>
</body>
</html>

3 个答案:

答案 0 :(得分:0)

以下代码对我有用

driver.findElement(By.xpath("//div[contains(.,'text4')]/input")).click();

答案 1 :(得分:0)

要将文本标识为 text1 ,您可以使用以下代码行:

WebElement element_text1 = driver.findElement(By.xpath("//div[@class='section-content']/div[contains(normalize-space(), 'text1')]"));

要识别与文本为 text1 的节点相关联的复选框,您可以使用以下代码行:

driver.findElement(By.xpath("//div[@class='section-content']/div[contains(normalize-space(), 'text1')]/input"));

答案 2 :(得分:-1)

试试这个:

WebElement body = dr.findElement(By.xpath("/html/body"));
    List<WebElement> div = dr.findElements(By.className("section-content"));
    for(int i=1;i<div.size();i++)
    {
        String checkBoxText = dr.findElement(By.xpath("/html/body/div["+i+"]/div")).getText();
        if(checkBoxText.equals("text3"))
        {
            dr.findElement(By.xpath("/html/body/div["+i+"]/div/input")).click();
            break;
        }
    }