8

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

selenium.setSpeed("500");

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

4

4 回答 4

12

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

于 2012-06-22T14:44:09.207 回答
6

没有直接的方法。但是您可以使用一个 hack,您可以覆盖 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);
}

}
于 2013-06-03T15:12:58.127 回答
4

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

或者,您可以使用此处描述的显式隐式等待

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

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

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

于 2012-06-25T09:01:46.493 回答
0

更好的可能是将 webdriver FluentWait 类与 ExpectedCondition 一起使用。样本可以在这里找到:http: //www.summa-tech.com/blog/2011/10/10/using-page-objects-with-selenium-and-web-driver-20/

于 2012-06-26T11:26:44.987 回答