我正试图单击一个复选框,但一直单击链接“条款和条件”。虽然我的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>
我尝试了一些选项,但这些选项始终无法选中,因此链接“条款和条件”获得了点击。我一定缺少基本的东西。
driver.findElement(By.xpath("//label[@for='basket-contact-terms']")).click();
driver.findElement(By.xpath("//label[contains(@class,'checkbox__label checkbox__label--has-link checkbox__label--small')]")).click();
我确实环顾四周,发现有人建议使用此功能(如下),所以我尝试了但没用:
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();
任何建议将不胜感激。
答案 0 :(得分:0)
您可以尝试
WebElement elem = driver.findElement(By.id("basket-contact-terms"))
答案 1 :(得分:0)
由于您尝试了INPUT
的ID并抛出了一个不可见的错误,因此我首先尝试等待它是否将变为可见。 (我假设它不会,但是值得一试)。
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.id("basket-contact-terms"))).click();
如果这不起作用,我接下来将尝试单击元素上的其他位置。默认情况下,Selenium单击元素的中心。就您而言,我认为这就是问题所在。您可以使用Actions
单击元素的左上角(1,1)。
WebElement label = driver.findElement(By.xpath("//label[@for='basket-contact-terms']"));
new Actions(driver).moveToElement(label, 1, 1).click().perform();