zag*_*000 0 java selenium xpath webdriver css-selectors
我试图单击一个复选框,但它一直在单击“条款和条件”链接。虽然我的 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>
Run Code Online (Sandbox Code Playgroud)
图片:条款和条件
我尝试了几个选项,但始终无法选中该框,而是点击了“条款和条件”链接。我一定缺少一些基本的东西。
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();
Run Code Online (Sandbox Code Playgroud)
我确实环顾四周,发现有人建议使用这个(如下),所以我尝试了但没有成功:
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();
Run Code Online (Sandbox Code Playgroud)
任何建议将不胜感激。
由于您尝试了 ID INPUT
,但它抛出了一个不可见的错误,所以我首先尝试等待,看看它是否会变得可见。(我假设它不会,但值得先尝试一下)。
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.id("basket-contact-terms"))).click();
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,我接下来会尝试单击元素上的其他位置。默认情况下,Selenium 单击元素的中心。就你的情况而言,我认为这就是导致问题的原因。您可以使用Actions
单击元素的左上角 (1,1)。
WebElement label = driver.findElement(By.xpath("//label[@for='basket-contact-terms']"));
new Actions(driver).moveToElement(label, 1, 1).click().perform();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3091 次 |
最近记录: |