2017-07-19 88 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

謝謝。但即使在使用「測試」後,它也給了我同樣的錯誤。 –