Selenium with Firefox and Mocha 不会转到 URL



我相信这段代码有一个小的基本问题,但我正在与它斗争几个小时,并希望得到一些帮助。

我写了以下简单的代码:

var assert  = require('assert'),
  webdriver = require('selenium-webdriver');
describe('Google Search', function() {
    var driver;
    before(function() {
        console.log("before START")
        driver = new webdriver.Builder()
        .forBrowser('firefox')
        .build();
        console.log("before END")
    });
    it('should work', function(done) {
        console.log("it START")
        driver.get('http://www.google.com/');
        console.log("it END")
    });
    after(function() {
        console.log("after START")
        driver.quit();
        console.log("after END")
    });
});

并运行它:

mocha open_google --timeout 15000

我希望火狐被打开(在阻止之前),重定向到谷歌(它),然后关闭(之后)。

然而,它不会发生。我可以看到:

  1. before() 和 it() 可以快速执行(前 4 个 console.logs 几乎可以立即打印)
  2. 几秒钟后,Firefox 被打开,但永远不会去谷歌,它只是在那里停留,直到 15 秒过去。
  3. after() 块完成,浏览器关闭

我在这里做错了什么?

取决于多种因素,包括操作系统/浏览器组合, WebDriver 可能会也可能不会等待页面加载。在一些 在这种情况下,WebDriver 可能会在页面具有之前返回控制权 完成,甚至开始加载。为了确保稳健性,您需要 使用显式和等待元素存在于页面中 隐式等待。[1]

[1]: http://www.seleniumhq.org/docs/03_webdriver.jsp

这意味着,您应该等待元素可见以获得预期的行为。希望这个解决方案会起作用。

最新更新