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

Rip*_*sim 7 java selenium-rc selenium-webdriver

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

selenium.setSpeed( "500");

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

Jim*_*ans 10

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

  • 我认为`setSpeed`最常见的需求是_developing_自动化测试.我遇到了2个测试通过的情况,但是如果我将它们作为套件运行,那么第二个测试就会失败.我正在尝试调试正在发生的事情,但屏幕移动得太快以至于我看不到实际发生了什么. (4认同)
  • 差不多一年后,我回到了这里.我现在正在使用Protractor为Angular应用程序开发测试.Promise系统使调试变得更加困难,因为我的测试只是注册了一系列命令,但我想逐步完成命令的执行.这意味着就我所知,在网络驱动程序代码中加入断点. (2认同)

小智 5

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

}
Run Code Online (Sandbox Code Playgroud)


sha*_*p00 4

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

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

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

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

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