我已经挣扎了一段时间,迫使Protractor测试在Windows上运行稳定。相同的测试在Linux环境中运行得非常好,但偶尔会出现在Windows上
失败:在页面上找不到Angular http://localhost:2000/index.html#/app:从未提供角度 resumeBootstrap
我已经通过谷歌搜索找到了几种治疗方法:
browser.executeScript () -> window.name = "NG_DEFER_BOOTSTRAP!"
所以量角器有点应该等到角度被引导。
除此之外,有一个解决方案明确要求量角器等待角度:
browser.waitForAngular()
但仍然没有运气。
我想也许在某些情况下,窗口可能很慢,无法为量角器渲染页面并将页面超时时间增加到30秒,但它也没有帮助。
顺便说一下,我使用量角器2.1,昨天更新到这个版本,希望这个问题最终能在那里得到解决。
有什么建议吗?
protractor.conf是:
exports.config = {
baseUrl: "http://localhost:6518/",
specs: ["./e2e/**/*.coffee"],
allScriptsTimeout: 30000,
getPageTimeout: 30000,
capabilities: {
"browserName": (process.env.KARMA_BROWSER || "Firefox").toLowerCase()
},
framework: "jasmine",
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 60000
},
onPrepareCommon: function(customiseDSL) {
addLibraries({
"_": "lodash",
requestify: "requestify"
});
addJQueryLocator();
var reporters = require('jasmine-reporters');
jasmine.getEnv().addReporter(new reporters.JUnitXmlReporter({
savePath: 'build/test-results',
consolidateAll: false
}));
customiseDSL();
Browser.open();
Browser.setDefaultSize();
browser.manage().timeouts().setScriptTimeout(30000);
function addLibraries(libraries) {
for(var key in libraries) {
global[key] = require(libraries[key]);
}
}
function addJQueryLocator() {
By.addLocator("$", function() {
var selector = arguments[0];
var using = arguments[1] || document;
var results = $(using).find(selector);
var matches = [];
if (!$.isArray(results)) {
matches.push(results.get(0));
} else {
for (var i = 0; i < results.length; ++i) {
matches.push(results[i][0]);
}
}
return matches; // Return the whole array for webdriver.findElements.
});
}
}
};
的index.html
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="dist/libs/css/components.css" media="screen,print"/>
</head>
<body ng-app="Applications">
<div ui-view></div>
<script src="dist/libs/js/components.js"></script>
</body>
</html>