Selenium总是得到'错误:超过2000毫秒的超时'

时间:2014-10-01 12:07:55

标签: javascript selenium mocha

早上好,

我目前正在学习如何使用javascript(使用mocha)驱动Selenium。我创建了一个非常基本的测试,它在运行时给了我很多麻烦。每当我运行测试时,都会创建一个新的chrome实例并显示浏览器。当浏览器最初出现时,它会放置"数据:,"在“URL”框中,然后转到google.com。然后我收到以下错误:

$ mocha test

  Array
    #indexOf()
      ✓ should return -1 when the value is not present! 

  Google Search
    1) should work


  1 passing (2s)
  1 failing

  1) Google Search should work:
     Error: timeout of 2000ms exceeded
      at null.<anonymous> (/usr/local/lib/node_modules/mocha/lib/runnable.js:157:19)
      at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)

这是测试本身:

var assert = require('assert'),
    test = require('selenium-webdriver/testing'),
    webdriver = require('selenium-webdriver'),
    chrome = require('selenium-webdriver/chrome');

test.describe('Google Search', function() {
  test.it('should work', function() {
    var chromeOptions = new chrome.Options();
    chromeOptions.addArguments(['test-type']);

    var driver = new webdriver.Builder().withCapabilities(chromeOptions.toCapabilities()).build();

    driver.get('http://www.google.com');
    driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');
    driver.findElement(webdriver.By.name('btnG')).click();
    driver.wait(function() {
     return driver.getTitle().then(function(title) {  
       return title === 'webdriver - Google Search';
       });
    }, 1000);
    driver.quit();
  });
});

2 个答案:

答案 0 :(得分:3)

您收到的错误消息对我来说就像是Mocha超时。在Mocha中设置超时的常规方法是:

it("foo", function () {
    this.timeout(value);
    ...
});

其中value是您想要的任何值(以毫秒为单位)。值为0将关闭Mocha的超时。默认值为2000毫秒。

答案 1 :(得分:0)

如果它在某个地方特别失败,也许你应该考虑调用driver.Manage().Timeouts()

ImplicitlyWait()实际上并不像Thread.sleep()那样等待,它只是为隐式等待设置驱动程序最长等待时间。只需在代码开头调用一次(传入20秒参数)就足够了。阅读 ImplicitlyWait WebDriverWait 类。

据我所知(当我不得不使用时),这是因为你没有得到预期/默认时间的响应。