Implicitwait不等待下面提到的代码中的指定持续时间

时间:2016-08-04 08:37:17

标签: selenium selenium-webdriver

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

2 个答案:

答案 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。你可以尝试:

  1. Thread.sleep(5000);
  2. (new WebDriverWait(driver, 5)) .until(new ExpectedCondition<WebElement>()