无法选择/取消选中标签内的复选框

时间:2016-09-27 15:02:59

标签: html selenium-webdriver

我正在尝试使用java selenium运行此脚本,我收到错误"未知错误:元素在点(1142,356)处无法点击&# 34; 请参阅以下代码:

wd.get("https://login.yahoo.com/?.src=ym&.intl=us&.lang=en-
US&.done=https%3a//mail.yahoo.com");
WebElement e = wd.findElement(By.xpath(".//*[@type='text']"));  
e.sendKeys("abcd");
wd.findElement(By.xpath(".//*@id='yui_3_18_1_11_1474955984806_126']'))]")).c lick();    

网页中的实际HTML代码:

<input id="persistent" class="checkbox" type="checkbox" checked="" tabindex="3" value="y" name=".persistent">
<label for="persistent" id="yui_3_18_1_11_1474987692298_128">Stay signed in</label>

任何人都可以帮助我如何选择/取消选中附加到标签标签时的复选框。

4 个答案:

答案 0 :(得分:0)

您提到的xpath无效。试试下面的xpath

wd.findElement(By.xpath(".//*[@id='yui_3_18_1_11_1474955984806_126']")).click(); 

您在[

之前未提及@id

答案 1 :(得分:0)

其实你是想点击<label>元素而不是<input id="persistent" class="checkbox" type="checkbox" checked="" tabindex="3" value="y" name=".persistent">  元件。您应该尝试使用checkbox找到By.id()元素,如下所示: -

wd.findElement(By.id("persistent")).click();

或者,如果您想点击<label>元素,请尝试使用By.cssSelector(),如下所示: -

wd.findElement(By.cssSelector("label[for = 'persistent']")).click();

答案 2 :(得分:0)

最后它正在使用xpath

wd.findElement(By.xpath(".//label[@for='persistent']")).click();

这里我们应该将label标签及其属性作为目标。因此,我们可以轻松访问该元素。

答案 3 :(得分:0)

WebDriver wd = null;
        wd = new FirefoxDriver();
        //Open website page
        wd.get("https://login.yahoo.com/?.src=ym&.intl=us&.lang=en-US&.done=https%3a//mail.yahoo.com");
        Thread.sleep(2000);

        WebElement e = wd.findElement(By.xpath("//*[@type='text']"));  
        e.sendKeys("abcd");
        wd.findElement(By.xpath("//*[@id='persistency']/div/label")).click();
        Thread.sleep(1000);
        wd.findElement(By.xpath("//*[@id='persistency']/div/label")).click();

此代码可以使用。因为我已经尝试过并且运行成功。