【发布时间】:2019-05-18 21:23:45
【问题描述】:
我正在尝试单击一个复选框,但它一直在单击“条款和条件”链接。虽然我的 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();
任何建议将不胜感激。
【问题讨论】:
-
试试
driver.findElement(By.id("basket-contact-terms")).click(); -
谢谢@Andersson,我已经尝试了你的建议以及“//input[@id='basket-contact-terms']”,对于这两个我都得到了'org.openqa.selenium。 ElementNotVisibleException:元素不可见'异常。两者都是有效的选择器模式,但它不是我检查时需要的。
标签: java selenium xpath css-selectors webdriver