我尝试使用量角器(2.1.0)为我的Angular(1.4)网站设置End-2-End测试。 Jasmine已安装且单元测试工作正常。当我运行量角器时,索引#/ login页面会在浏览器窗口中加载,但没有代码运行,并且量角器会报告此错误
失败:在页面http://localhost/SpectrumGMWeb/index.html#/login上找不到Angular:重试超出角度
我的量角器配置看起来像这样
exports.config = {
allScriptsTimeout: 11000,
seleniumAddress: 'http://127.0.0.1:4444/wd/hub',
specs: [
'*.js'
],
rootElement:'html',
capabilities: {
'browserName': 'chrome'
},
baseUrl: 'http://localhost/SpectrumGMWeb/',
framework: 'jasmine2',
jasmineNodeOpts: {
defaultTimeoutInterval: 30000
},
};
我的测试文件很简单
describe('my app', function() {
describe('login', function() {
beforeEach(function() {
browser.get('index.html#/login');
});
it('should render login page when user navigates to login page', function() {
expect(true).toBe(true);
});
});
});
纳克应用内="主"在index.html的html元素上设置。该网站确实有效。
有什么想法吗?
答案 0 :(得分:9)
尝试在登录功能browser.ignoreSynchronization = true;
之前添加browser.get()
。
答案 1 :(得分:5)
非常感谢大家的投入。我最后通过将所有index.html文件内容复制到新文件来解决此问题。似乎文件以某种方式被破坏,而量角器不喜欢这种方式。我知道这听起来很简单,但我浪费了整整2天的时间,所以希望它有所帮助。
答案 2 :(得分:5)
如果您需要导航到不使用Angular的页面,请在browser.get()之前添加以下代码行:
browser.waitForAngularEnabled(假);
参考:https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular-on-page-load
答案 3 :(得分:0)
您确定已在http://localhost/SpectrumGMWeb/
启动了服务器吗?
量角器将此URL提供给Selenium并尝试在此地址访问您的应用程序。如果它没有在这个地址运行,Protractor将不会得到它的响应,并会给你错误。
如果您需要有关如何启动并运行本地服务器以提供项目的建议,我建议grunt-connect,例如像这样(将在http://localhost:9001
启动服务器)
module.exports = function(grunt) {
grunt.initConfig({
connect: {
server: {
options: {
port: 9001,
base: '', // root folder of your app files
keepalive: true
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.registerTask('default', ['connect:server'])
}
答案 4 :(得分:0)
我也收到了这个错误,我通过更改我的package.json"脚本"来修复它。变量来自:
"scripts": {
...
// REMOVE "pree2e"
"e2e": "ng e2e"
}
到
form {
height: 200px;
width: 400px;
margin-right: 50px;
}
.name {
float: left;
}
input[type=text],
input[type=email] {
background: #F0F0F0;
font-size: 10px;
width: 100%;
height: 20px;
}
input[type=subject] {
background: #F0F0F0;
font-size: 10px;
width: 100%;
height: 20px;
}
textarea {
resize: vertical;
font-size: 10px;
width: 100%;
background: #F0F0F0;
height: 100px;
}
input[type=submit] {
background: #00bfff;
border: none;
color: #ffffff;
cursor: pointer;
font-size: 10px;
font-weight: 700;
width: 100%;
}