WebDriver中是否有任何用Java控制浏览器速度的方法?

时间:2012-06-22 11:04:25

标签: java selenium-webdriver selenium-rc

当我使用Selenium RC时,方法setSpeed为:

selenium.setSpeed( “500”);

在Selenium WebDriver中控制浏览器速度的方法是什么?

4 个答案:

答案 0 :(得分:10)

在Selenium WebDriver中,没有任何方法可以控制每个“步骤”的速度。有一段时间,setSpeed()接口上有Options方法(在Java绑定中;其他绑定在其适当命名的对象上有类似的构造),但很久以前就被弃用了。这背后的理论是,您不应该先验减慢WebDriver代码的每一步。如果您需要在应用程序中等待某些事情发生自动化,那么您应该使用隐式或显式等待例程。

答案 1 :(得分:4)

您可以使用您用于运行webdriver的任何语言的Thread.Sleep(500)(或等效语言)。这将导致线程暂停一段精确的毫秒数。

或者,您可以使用显式隐式等待描述here

  • 显式等待允许您定义ExpectedCondition。 Webdriver将每500毫秒检查一次条件,直到它返回true,(之后执行将立即恢复)。

  • 隐式等待会导致webdriver继续尝试在DOM中找到某些内容。一旦找到元素,执行将立即恢复。

请注意,隐式或显式等待都不能保证500毫秒的暂停。

答案 2 :(得分:4)

没有直接的方式。但是有一个你可以使用的黑客,你可以覆盖webdriver的方法,并引入一个明确的睡眠来减慢你的测试,例如。重写findElement方法

public class _WebDriver extends FirefoxDriver {

@Override
public WebElement findElement(By by) {
    try {
        Thread.sleep(500);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return by.findElement((SearchContext) this);
}

}

答案 3 :(得分:0)

更好的方法是使用Webdriver FluentWait类和ExpectedCondition。样品可以在这里找到: http://www.summa-tech.com/blog/2011/10/10/using-page-objects-with-selenium-and-web-driver-20/