我正在运行一组测试,用于在网站的许多视图上验证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);
答案 0 :(得分:5)
正如Shaunhusain所解释的那样,你必须增加你的默认超时间隔。使用以下标记更新您的conf.js文件,点击link以获取更多信息 -
jasmineNodeOpts: {
defaultTimeoutInterval: 30000 //increase the time to avoid async errors (milliseconds)
}
另一方面,您还可以更新 onPrepare()函数以包含implicit / pageLoadTimeout等待。这也有帮助。
onPrepare: function(){
// implicit and page load timeouts
browser.manage().timeouts().pageLoadTimeout(60000);
browser.manage().timeouts().implicitlyWait(35000);
}
还有另一种延迟的方法。如果您发现任何特定规格的异步错误,那么您只能为该特定规范添加延迟。这是一个例子 -
describe("Test", function(){
it("First Spec", function(){
//your code here
},60000);
});
希望这有帮助。
答案 1 :(得分:3)
您可能需要扩展DEFAULT_TIMEOUT_INTERVAL,或许浏览器使用大量CPU(或等待转换或其他类似的东西)并且无法在默认提供的窗口中完成操作:
http://jasmine.github.io/2.1/introduction.html#section-Asynchronous_Support
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
答案 2 :(得分:-1)
尝试使用
directConnect=true
有时在本地使用SeleniumGrid工作效果不佳或稳定......