未选中硒复选框
Selenium checkbox not being checked
我正在尝试测试此网站上的隐私声明复选框
复选框的HTML代码为
<input type="checkbox" name="registryTandCs" id="registryTandCs" value="" class="form-check-input form-check-input--custom" required="required" data-parsley-multiple="registryTandCs">
我用来检查的代码是
driver.findElement(By.id("registryTandCs")).click();
不过,好像不行。
我也试过
WebElement checkBox = driver.findElement(By.id("registryTandCs"));
checkBox.click();
如果有任何帮助,相关网站是 here
主要问题是,当您尝试单击复选框时,其他元素被单击了。您可以看到输入标签和标签标签重叠 (请检查附图)。
截图:
始终检查错误堆栈跟踪。
org.openqa.selenium.ElementClickInterceptedException: element click intercepted: Element
<input type="checkbox" name="registryTandCs" id="registryTandCs" value="" class="form-check-input form-check-input--custom" required="required" data-parsley-multiple="registryTandCs">
is not clickable at point (655, 517).
Other element would receive the click:
<label for="registryTandCs" class="form-check-label form-check-label--grey">...</label>
工作解决方案: 有两种方法可以解决这个问题。
使用操作 Class:
WebElement checkBox = driver.findElement(By.id("registryTandCs"));
Actions action = new Actions(driver);
action.moveToElement(checkBox).click().build().perform();
使用 JavascriptExecutor:
WebElement checkBox = driver.findElement(By.id("registryTandCs"));
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("arguments[0].click();", checkBox);
到 click()
元素上,您可以使用以下任一项 :
id:
driver.findElement(By.id("registryTandCs")).click();
姓名:
driver.findElement(By.name("registryTandCs")).click();
cssSelector:
driver.findElement(By.cssSelector("input#registryTandCs[name='registryTandCs']")).click();
xpath:
driver.findElement(By.xpath("//input[@id='registryTandCs' and @name='registryTandCs']")).click();
理想情况下 click()
在您需要为 elementToBeClickable()
引入 的元素上,您可以使用以下任一方法 :
id:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.id("registryTandCs"))).click();
姓名:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.name("registryTandCs"))).click();
cssSelector:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input#registryTandCs[name='registryTandCs']"))).click();
xpath:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='registryTandCs' and @name='registryTandCs']"))).click();
我正在尝试测试此网站上的隐私声明复选框
复选框的HTML代码为
<input type="checkbox" name="registryTandCs" id="registryTandCs" value="" class="form-check-input form-check-input--custom" required="required" data-parsley-multiple="registryTandCs">
我用来检查的代码是
driver.findElement(By.id("registryTandCs")).click();
不过,好像不行。 我也试过
WebElement checkBox = driver.findElement(By.id("registryTandCs"));
checkBox.click();
如果有任何帮助,相关网站是 here
主要问题是,当您尝试单击复选框时,其他元素被单击了。您可以看到输入标签和标签标签重叠 (请检查附图)。
截图:
始终检查错误堆栈跟踪。
org.openqa.selenium.ElementClickInterceptedException: element click intercepted: Element
<input type="checkbox" name="registryTandCs" id="registryTandCs" value="" class="form-check-input form-check-input--custom" required="required" data-parsley-multiple="registryTandCs">
is not clickable at point (655, 517).
Other element would receive the click:
<label for="registryTandCs" class="form-check-label form-check-label--grey">...</label>
工作解决方案: 有两种方法可以解决这个问题。
使用操作 Class:
WebElement checkBox = driver.findElement(By.id("registryTandCs"));
Actions action = new Actions(driver);
action.moveToElement(checkBox).click().build().perform();
使用 JavascriptExecutor:
WebElement checkBox = driver.findElement(By.id("registryTandCs"));
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("arguments[0].click();", checkBox);
到 click()
元素上,您可以使用以下任一项
id:
driver.findElement(By.id("registryTandCs")).click();
姓名:
driver.findElement(By.name("registryTandCs")).click();
cssSelector:
driver.findElement(By.cssSelector("input#registryTandCs[name='registryTandCs']")).click();
xpath:
driver.findElement(By.xpath("//input[@id='registryTandCs' and @name='registryTandCs']")).click();
理想情况下 click()
在您需要为 elementToBeClickable()
引入
id:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.id("registryTandCs"))).click();
姓名:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.name("registryTandCs"))).click();
cssSelector:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input#registryTandCs[name='registryTandCs']"))).click();
xpath:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='registryTandCs' and @name='registryTandCs']"))).click();