我正在尝试使用量角器运行基本的端到端测试。我总是会收到此错误。
ScriptTimeoutError:超时
我检查了此链接https://github.com/angular/protractor/blob/master/docs/timeouts.md并增加了默认超时时间,但仍然收到相同的错误。我不知道从哪里弹出此错误。浏览器将加载基本网址,稍后它将不执行测试中提到的任何操作。测试非常简单,打开浏览器并单击菜单,然后验证URL是否匹配。
exports.config = {
framework: 'jasmine2',
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['test/e2e/menu.js'],
capabilities: {
'browserName': 'firefox',
},
baseUrl: 'http://localhost:8100/#/',
//allScriptsTimeout: 360000,
jasmineNodeOpts: {
showColors: true,
// defaultTimeoutInterval: 360000
},
//useAllAngular2AppRoots:true,
//menu.js
describe('menu check', function () {
beforeEach(function () {
browser.get('http://localhost:8100/#/');
browser.waitForAngular();
// browser.driver.manage().timeouts().setScriptTimeout(60000);
});
it('Should route to the operationalView page from menu', function () {
element(by.css('[href="#/operationalView"]')).click();
expect(browser.getCurrentUrl()).toMatch('http://localhost:8100/#/operationalView');
});
it('Should route to the worldlview page from menu', function () {
element(by.css('[href="#/worldView"]')).click();
expect(browser.getCurrentUrl()).toMatch('http://localhost:8100/#/worldView');
});
});
Run Code Online (Sandbox Code Playgroud)
我曾经遇到过这个问题,我使用解决了
browser.ignoreSynchronization=true
Run Code Online (Sandbox Code Playgroud)
在beforeEach()量角器规格文件中的方法之前。这使量角器不必等待Angular承诺,例如来自$http或$timeout要解决的承诺。您可以在脚本中尝试。
编辑:从今天开始,08/16/19,该解决方案已被弃用。使用waitForAngularEnabled可false代替。