请记住,以下几种情况有所不同:
我的猜测是,如果某些页面使用javascript显示,则元素已经存在于浏览器DOM中,但不可见。隐式等待仅等待元素出现在DOM中,因此它会立即返回,但是当您尝试与该元素进行交互时,您会收到NoSuchElementException。您可以通过编写一个辅助方法来检验此假设,该方法显式等待元素可见或可单击。
一些示例(在Java中):
public WebElement getWhenVisible(By locator, int timeout) {
WebElement element = null;
webdriverwait wait = new webdriverwait(driver, timeout);
element = wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
return element;
}
public void clickWhenReady(By locator, int timeout) {
webdriverwait wait = new webdriverwait(driver, timeout);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(locator));
element.click();
}