2015-02-23 58 views
1

我遇到同样的问题,如上所述here我需要等待网站加载,我可以知道它完成时微调消失,然后我需要进行测试。但是,这样一个简单的测试:微调后测试

beforeAll(function(){ 
    Core.login(env.currentUser).then(function(){ 
     var foo = browser.wait(function(){ 
      return !browser.isElementPresent(by.css('.modal .env-waiting-content')); 
     }, 50000); 
     console.log("page loaded"); 
     mainPage.navBar.buttons.logIncident.click(); 
    }); 
}); 


it('should work', function(){ 
    expect(1).toBe(1); 
}); 

失败,出现错误:

Message: 
    Failed: ENOTFOUND getaddrinfo ENOTFOUND 
    Stack: 
    Error: Failed: ENOTFOUND getaddrinfo ENOTFOUND 
     at /home/set/.nvm/v0.10.28/lib/node_modules/protractor/node_modules/jasminewd2/index.js:104:16 
     at /home/set/.nvm/v0.10.28/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/base.js:1582:15 
     at [object Object].webdriver.promise.ControlFlow.runInNewFrame_ (/home/set/.nvm/v0.10.28/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1654:20) 
     at notify (/home/set/.nvm/v0.10.28/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:465:12) 
     at notifyAll (/home/set/.nvm/v0.10.28/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:442:7) 
     at resolve (/home/set/.nvm/v0.10.28/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:420:7) 
     at reject (/home/set/.nvm/v0.10.28/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:545:5) 
     at /home/set/.nvm/v0.10.28/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/base.js:1582:15 
     at [object Object].webdriver.promise.ControlFlow.runInNewFrame_ (/home/set/.nvm/v0.10.28/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1654:20) 
     at notify (/home/set/.nvm/v0.10.28/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:465:12) 
     at notifyAll (/home/set/.nvm/v0.10.28/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:442:7) 
     at resolve (/home/set/.nvm/v0.10.28/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:420:7) 
     at [object Object].reject (/home/set/.nvm/v0.10.28/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:545:5) 
     at /home/set/.nvm/v0.10.28/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1529:10 
     at newFrame.onAbort (/home/set/.nvm/v0.10.28/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1679:7) 
     at [object Object].webdriver.promise.Frame_.notify_ (/home/set/.nvm/v0.10.28/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1914:5) 
     at [object Object]._onTimeout (/home/set/.nvm/v0.10.28/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1887:13) 
     at Timer.listOnTimeout [as ontimeout] (timers.js:110:15) 
  • 我怎样才能避免这种错误,为什么发生?
  • 为什么console.log("page loaded");输出消息要比微调消失得早得多,以及在when之后执行某些代码的方式是什么,某种then
  • browser.wait和browser.driver.wait有什么区别?

回答

1

您的错误看起来像一个基本的网络问题。您能否获得Protractor附带的示例测试工作?

第二个问题(为什么console.log发生这么早)是因为量角器命令不的事情,他们队列事情稍后完成(承诺底层webdriver的“控制流”执行)。请阅读https://github.com/angular/protractor/blob/master/docs/control-flow.mdhttps://code.google.com/p/selenium/wiki/WebDriverJs#Understanding_the_API。所以,console.log最终会在步骤排队时运行,而不是执行。

通常,在量角器中,“顶级”APIs如browserprotractorby都是“角度感知”的。 browser.driver API是底层的Selenium webdriver API(它不知道Angular)。在wait的特殊情况下,我认为没有太大区别(但我对此并不是100%信心)。