【发布时间】:2018-10-27 13:05:49
【问题描述】:
昨天我问了如何处理:Selenium WebDriver 中的“元素不可点击 - 其他元素会收到点击”异常。
我收到了几个关于这个解决方案的答案:
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id(...));
是的,它有道理,但实际上它不起作用。 以下是我的一段代码:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].scrollIntoView();", categoryItem);
Thread.sleep(1000);
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(categoryItem));
categoryItem.click();
List<WebElement> selects = driver.findElements(By.tagName("select"));
Select ticketsSelect = new Select(selects.get(3));
ticketsSelect.selectByValue("2");
By addToBasket = By.xpath("//div[contains(text(),'Add to Basket')]");
Thread.sleep(1000);
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(addToBasket));
driver.findElement(addToBasket).click();
我必须在每个等待元素可点击之前放置 1 秒睡眠,因为如果没有这个,它仍然会引发其他元素会收到点击的异常。 我的问题是,如果元素不可点击,为什么 WebDriver 会点击这个元素?
【问题讨论】:
-
这个异常通常告诉你哪个元素会收到点击,那个元素是什么?是隐藏元素的导航栏吗?或者它是一个没有完全消失的模态等等?根据对此的答案,我有一个解决方案。