在对浏览器进行一系列调用后,量角器/ Webdriver失去同步

Jas*_*ett 2 ui-automation angularjs protractor karma-jasmine

我正在运行一组测试,用于在网站的许多视图上验证URL和一些HTML/Angular项.基本上,测试会在左侧面板中抓取一个图标(在您悬停时移入和移出),然后出现一个菜单,其中包含您可以单击的按钮.一旦菜单出现并显示第一层按钮,就可以点击另一组按钮(子菜单).

当我将鼠标悬停在子菜单按钮上并单击这些按钮时,我将被发送到页面/视图,我可以在其中执行断言/验证.

菜单将在此时消失,直到我将鼠标悬停在图标上并再次执行上述操作.除了最多有15个子按钮点击之外,我的所有测试都通过了.我试图颠倒顺序,因为当时看不到几个按钮,但测试再次失败.

有没有人遇到过在浏览器中重复执行大量操作后测试失败的情况?我在想我是在装载司机或其他什么东西......

我收到以下错误:

 Message:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
  Stack:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.

    3 specs, 1 failure
    Finished in 63.217 seconds

ui-platform/node_modules/protractor/node_modules/selenium-webdriver/lib/atoms/error.js:113
  var template = new Error(this.message);
Run Code Online (Sandbox Code Playgroud)

Gir*_*tur 5

正如Shaunhusain所解释的那样,你必须增加你的默认超时间隔.使用以下标签更新您的conf.js文件,这是更多信息的链接 -

  jasmineNodeOpts: { 
    defaultTimeoutInterval: 30000 //increase the time to avoid async errors (milliseconds)
  }
Run Code Online (Sandbox Code Playgroud)

另一方面,您还可以更新onPrepare()函数以包含implicit/pageLoadTimeout等待.这也有帮助.

  onPrepare: function(){
     // implicit and page load timeouts
     browser.manage().timeouts().pageLoadTimeout(60000);
     browser.manage().timeouts().implicitlyWait(35000);
  }
Run Code Online (Sandbox Code Playgroud)

还有另一种延迟的方法.如果您发现任何特定规格的异步错误,那么您只能为该特定规范添加延迟.这是一个例子 -

describe("Test", function(){
  it("First Spec", function(){
    //your code here
  },60000);
});
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.