我理解等待和使用它。但有一点我无法弄清楚:如果我在顶部隐式等待5秒然后使用显式等待元素。那么硒将如何表现。尝试但无法在网上得到满意的答案。
答案 0 :(得分:4)
首先要了解明确和隐含等待的概念
隐式等待:隐式等待是指在尝试查找一个或多个元素(如果它们不是立即可用)时,将WebDriver轮询DOM一段时间。默认设置为0.设置后,将为WebDriver对象实例的生命周期设置隐式等待。 例如:
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://somedomain/url_that_delays_loading");
WebElement myDynamicElement = driver.findElement(By.id("myDynamicElement"));
明确等待
在某些情况下,显式等待在功能上等同于隐式等待,意味着 a)如果等待时间没有像下面那样被预定义(请注意它们与方法类别不同,它们属于显式或隐式)
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id(" someid")));
b)webdriver有时间等待10秒的情况,但是在5秒内找到元素,然后webdriver将继续。
回答你的问题: 1)假设你定义了10秒然后驱动程序等待10个最大值,但至少它可以等待0.001秒意味着在隐式等待的情况下我们必须给出等待的最大限制,而最小限制取决于找到元素或获得条件完成。
2)在明确等待期间,除了某些案例webdriver必须等待最大限制。
参考: