硒 - 减少元素时间

时间:2013-05-29 10:59:17

标签: selenium-webdriver

当我运行webdriver时,它运行得太快。

webdriver在第一个出现之前移动next element

我可以让webdriver变慢吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您使用的是java,则可以在找到here

的每个页面上进行隐式等待
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"));

但更好的方法是使用流畅的等待,等待元素出现在页面上,就像这样

public WebElement fluentWait(final By locator){
    Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
            .withTimeout(30, TimeUnit.SECONDS)
            .pollingEvery(5, TimeUnit.SECONDS)
            .ignoring(NoSuchElementException.class);

    WebElement foo = wait.until(
    new Function<WebDriver, WebElement>() {
        public WebElement apply(WebDriver driver) {
                    return driver.findElement(locator);
            }
            }
      );
                       return  foo;              
   };

你可以通过

使用它
WebElement element = fluentWait(By.id("name"));
element.click();

这是阅读answer to waits with selenium

的绝佳答案