在页面上找不到量角器错误Angular

时间:2015-07-31 17:56:12

标签: angularjs jasmine protractor

我尝试使用量角器(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元素上设置。该网站确实有效。

有什么想法吗?

5 个答案:

答案 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%;
}