Selenium webdriver:复选框元素不可点击

时间:2018-02-22 20:45:21

标签: selenium selenium-webdriver

我尝试通过chrome webdriver选择复选框,但始终会收到类似“元素在点(x,y)处无法点击”的错误。我使用最新的ChromeDriver 2.35。谢谢你的帮助!

以下是我试过的电话“

driver.findElement(By.xpath("/html[@class='ng-scope']/body[@class='layout-default']/main[@class='container']/form[@class='form-horizontal ng-pristine ng-valid ng-valid-required']/div[@class='row ng-scope']/div[@class='col-md-7']/div[@class='panel panel-default ng-scope']/div[@class='panel-body'][1]/div[@class='list-permission'][1]/div[@class='checkbox'][1]/label")).click();

OR

driver.findElement(By.cssSelector("input[value='platform:AccessWebsite']")).click();

OR

driver.findElement(By.xpath("//input[@value='platform:AccessWebsite']")).click;

以下是html源代码的片段

		<h2>Main Platform</h2>
	  <div class="list-permission">
			<div class="checkbox">
			<label>
				<input name="Policy[0][Action][]" type="checkbox" value="platform:AccessWebsite">
				Access to the website
			</label>
		</div>
    .......
    

1 个答案:

答案 0 :(得分:0)

当元素不在屏幕的可视部分时,我们将获得元素不可点击的异常。解决方案是将光标移动到该元素或滚动屏幕。您可以使用Actions类移动到该元素或javascript执行器进行滚动。尝试以下代码并告诉我。

WebElement element=driver.findElement(By.xpath("/html[@class='ng-scope']/body[@class='layout-default']/main[@class='container']/form[@class='form-horizontal ng-pristine ng-valid ng-valid-required']/div[@class='row ng-scope']/div[@class='col-md-7']/div[@class='panel panel-default ng-scope']/div[@class='panel-body'][1]/div[@class='list-permission'][1]/div[@class='checkbox'][1]/label"));
Actions act= new Actions(driver);
act.moveToElement(element).click().build().perform();

这应该按预期工作。 注意:某些浏览器可能不支持动作类,在这种情况下,我建议您滚动屏幕并执行单击。