Selenium webdriver必须等待代码中提到的30秒和5秒。但是注意到webdriver正在跳过它。是什么原因以及如何让webdriver等待。
System.out.println("Before 5"+date.toString());
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
System.out.println("After 5"+date.toString());
可以在此处找到完整代码的链接 https://drive.google.com/file/d/0B4SgyzyvwKhiUk9KVldTa2ZGUkE/view?usp=sharing
答案 0 :(得分:1)
隐式等待不像正常Thread.sleep()
那样工作,你放置5s
时间,你的主线程停止并等待5秒。
它将与WebDriver Instance
一起使用,它将等待网页上的特定元素出现在等待中提到的时间。如果没有要识别的元素,即元素已经在dom中加载,则隐式等待不会等待那段时间。
所以当你说: -
System.out.println("Before 5"+date.toString());
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
System.out.println("After 5"+date.toString());
它不会显示5秒的时差。
如果有任何元素没有在dom中加载,那么它将等待5秒钟。
System.out.println("Before 5"+date.toString());
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.findElement(By.id("some id")).sendKeys("Some Text")
System.out.println("After 5"+date.toString()); |
|------- Here if the element isn't loaded in dom, then webdriver would wait for 5 seconds.
有关Waits
的更多信息答案 1 :(得分:0)
你想等5s。你可以尝试:
Thread.sleep(5000);
(new WebDriverWait(driver, 5))
.until(new ExpectedCondition<WebElement>()