Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在使用Selenium Webdriver之前,无法找到并单击复选框::_Java_Selenium_Xpath_Css Selectors_Webdriver - Fatal编程技术网

Java 在使用Selenium Webdriver之前,无法找到并单击复选框::

Java 在使用Selenium Webdriver之前,无法找到并单击复选框::,java,selenium,xpath,css-selectors,webdriver,Java,Selenium,Xpath,Css Selectors,Webdriver,我试图点击一个复选框,但它一直点击“条款和条件”链接。虽然我的xpath(如下所述)在最小化窗口上工作,但当窗口最大化时,它无法单击复选框,因为href(图像)显示在复选框旁边的第二行。寻找一些关于单击最大化窗口上的复选框小部件的建议。我需要集中精力 有趣的是,当我将鼠标悬停在::before(css选择器)上时,小部件才会高亮显示 <div class="checkbox u-mar-bot-5"> <div class="checkbox__container">

我试图点击一个复选框,但它一直点击“条款和条件”链接。虽然我的xpath(如下所述)在最小化窗口上工作,但当窗口最大化时,它无法单击复选框,因为href(图像)显示在复选框旁边的第二行。寻找一些关于单击最大化窗口上的复选框小部件的建议。我需要集中精力

有趣的是,当我将鼠标悬停在::before(css选择器)上时,小部件才会高亮显示

<div class="checkbox u-mar-bot-5">
  <div class="checkbox__container">
    <input class="checkbox__input" type="checkbox" id="basket-contact-terms" required data-parsley-multiple="basket-contact-terms" style>
<label class="checkbox__label checkbox__label--has-link checkbox__label--small" for="basket-contact-terms" style>
::before 
"I have read and agree to " <a class="text-link text-link--base text-link- small" href="/terms-conditions" target="_blank">Terms and Conditions</a>
    </label>
  </div>
</div>
我确实环顾四周,发现有人建议使用这个(如下),所以我尝试了,但没有成功:

WebElement elem = driver.findElement(By.xpath("//div[contains(@class,'checkbox u-mar-bot-5')]"));
Actions action = new Actions(driver);
action.moveToElement(elem).click().build().perform();
如有任何建议,将不胜感激

你可以试试看

WebElement elem=driver.findElement(By.id(“篮子联系人条款”))

您可以使用


WebElement elem=driver.findElement(By.id(“篮子联系条款”))

由于您尝试了
输入的id,但它抛出了一个不可见的错误,我会首先尝试等待,看看它是否可见。(我想不会,但值得一试)

如果这不起作用,我接下来会尝试单击元素上的其他位置。默认情况下,Selenium单击元素的中心。就你而言,我认为这就是问题的根源。您可以使用
操作
单击元素的左上角(1,1)

WebElement label = driver.findElement(By.xpath("//label[@for='basket-contact-terms']"));
new Actions(driver).moveToElement(label, 1, 1).click().perform();

由于您尝试了
输入的ID,但它抛出了一个不可见的错误,因此我将首先尝试等待,看看它是否可见。(我想不会,但值得一试)

如果这不起作用,我接下来会尝试单击元素上的其他位置。默认情况下,Selenium单击元素的中心。就你而言,我认为这就是问题的根源。您可以使用
操作
单击元素的左上角(1,1)

WebElement label = driver.findElement(By.xpath("//label[@for='basket-contact-terms']"));
new Actions(driver).moveToElement(label, 1, 1).click().perform();

尝试
driver.findElement(By.id(“篮子联系人条款”)。单击()谢谢@Andersson,我已经尝试了您的建议以及“//input[@id='basket-contact-terms']”,并且对于这两种情况,我都得到了“org.openqa.selenium.ElementNotVisibleException:element NotVisibleException”异常。这两种都是有效的选择器模式,但它不是我检查时需要的模式。请尝试
driver.findElement(By.id(“篮子联系人条款”)。单击()谢谢@Andersson,我已经尝试了您的建议以及“//input[@id='basket-contact-terms']”,并且对于这两种情况,我都得到了“org.openqa.selenium.ElementNotVisibleException:element NotVisibleException”异常。两者都是有效的选择器模式,但这不是我检查时需要的模式。谢谢@Govind。安德森提出了同样的建议。我已经试过了,但是运气不好。谢谢@Govind。安德森提出了同样的建议。我试过了,但是运气不好。太好了@JeffC!我使用了左上角(1,1)的建议,效果非常好。是的,我的问题是基于窗口大小和元素的显示方式,在我的例子中,锚文本位于其中心。非常感谢。非常好@JeffC!我使用了左上角(1,1)的建议,效果非常好。是的,我的问题是基于窗口大小和元素的显示方式,在我的例子中,锚文本位于其中心。非常感谢。
WebElement label = driver.findElement(By.xpath("//label[@for='basket-contact-terms']"));
new Actions(driver).moveToElement(label, 1, 1).click().perform();