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)
正如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)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
1061 次 |
| 最近记录: |