2017-07-19 87 views
0

我要使用Mocha,Chai和selenium webdriver编写一个简单的测试。但它扔我:摩卡和柴 - 错误:超过25000ms超时。确保在此测试中调用done()回调

Error: timeout of 25000ms exceeded. Ensure the done() callback is being called in this test.

这里是我使用的代码:

'use strict'; 

var webdriver = require ('selenium-webdriver'), 
    chai = require ('chai'), 
    until = webdriver.until, 
    By = webdriver.By, 
    wait = webdriver.wait, 
    chaiAsPromised = require("chai-as-promised"), 
    assert = chai.assert, 
    mocha = require('mocha'), 
    expect = chai.expect; 
    chai.config.includeStack = true; 

    var driver; 

    describe('Login', function(){ 
     before(function(done){ 

     driver = new webdriver 
      .Builder() 
      .withCapabilities(webdriver.Capabilities.chrome()) 
      .build(); 

     driver.get('http://someurl'); 
     driver.findElement(By.id('username')).sendKeys('username'); 
     driver.findElement(By.id('password')).sendKeys('password'); 
     driver.findElement(By.id('Login')).click(); 

     this.timeout(25000); 
     setTimeout(done, 25000); 

     }); 


     after(function(done){ 
     driver.quit(); 
     this.timeout(5000); 
     done(); 
     }); 




     it('verify the waiting for task Button', function(){ 
     driver.wait(until.elementLocated(By.css('.StartButton__btn'))) 
     .then(function(){ 
     driver.findElement(By.css('.StartButton__btn')).click(); 
     }); 

     var waitScreenTest = 
     driver.findElement(By.css('.WaitingScreen__text')).getText(); 
     assert(waitScreenTest, 'Waiting for Tasks'); 
     }); 
    }); 

我该如何解决这个问题?

回答

0

您的问题的标准答案是“回报您的承诺,以便摩卡可以等待他们”。

但是,selenium-webdriver提供了摩卡股票函数的包装。这些功能与Selenium的承诺机制挂钩,并且不需要回复承诺或使用回调来等待Selenium的驱动程序完成。您只需导入selenium-webdriver/testing,然后使用该模块提供的功能describe,it,before,after ...。

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

test.describe("top level", function() { 

    test.before(...); 

    test.it("some test", function() { 
    }); 
}); 
+0

谢谢。但即使在使用“测试”后,它也给了我同样的错误。 –