根据我看到的每个答案和文档,以下内容应该等待xpath from collection import namedtuple
Point = namedtuple('Point', 'x y z')
mutable_z = Point(1,2,[3])
处的元素:
path
delay = some amount of time way longer than I know is needed
但无论我做什么,它都会在获取网址后立即抛出driver = webdriver.Firefox()
driver.get(url)
wait = WebDriverWait(driver, delay, ignored_exceptions=NoSuchElementException)
wait.until(EC.presence_of_element_located(driver.find_element_by_xpath(path)))
。在任何人将此标记为副本或者在我之前打电话给我之前,我都知道this答案,虽然我正在寻找的元素是某种包装,但在尝试上述时我遇到了同样的问题寻找那个包装器(如果我只提供一个正常的NoSuchElementException
调用而不是sleep
调用它会使我认为我不需要手动输入包装器,它也可以工作。有一个等待加载元素的函数有什么意义,它不会等到元素被加载?任何帮助解决这个问题都将非常感激。
答案 0 :(得分:0)
我在类似的情况下使用这个java代码:
private Wait<WebDriver> staleWait = new FluentWait<>(getDriver())
.withTimeout(WAIT_INTERVAL, TimeUnit.SECONDS)
.pollingEvery(POLLING_INTERVAL, TimeUnit.MILLISECONDS)
.ignoring(NoSuchElementException.class)
.ignoring(StaleElementReferenceException.class);
protected WebElement visibilityOf(WebElement webElement) {
staleWait.until((ExpectedCondition<Boolean>) webDriver -> {
try {
return element(webElement).isDisplayed();
} catch (StaleElementReferenceException e) {
return false;
} catch (NoSuchElementException ne) {
return false;
}
});
return element(webElement);
}