Protractor error Angular could not be found on the page

故事扮演 提交于 2019-12-22 03:48:06

问题


I'm trying to set up End-2-End testing for my Angular (1.4) site using protractor (2.1.0). Jasmine is installed and unit tests are working fine. When I run protractor the index#/login page loads in a browser window but no code runs and protractor reports this error

Failed: Angular could not be found on the page http://localhost/SpectrumGMWeb/index.html#/login : retries looking for angular exceeded

My protractor config looks like this

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
    },
};

My test file is very simple

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);
        });

    });
});

ng-app="main" is set on the html element of index.html. The website does work.

Any ideas?


回答1:


Try putting a browser.ignoreSynchronization = true; before you do a browser.get() in your login function.




回答2:


Well thanks everyone for your input. I did finally fix this problem by copying all the index.html file contents to a new file. It seems that somehow the file was corrupted in a way that protractor did not like. I know it sounds simple but I wasted 2 full days on this so hope it helps someone.




回答3:


If you need to navigate to a page which does not use Angular then Add this line of code before browser.get() line there:

browser.waitForAngularEnabled(false);

Reference : https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular-on-page-load




回答4:


Are you sure you've launched your server at http://localhost/SpectrumGMWeb/?

Protractor is feeding this URL to Selenium and trying to access your application at this address. If it is not running at this address Protractor will get no response from it and will give you the error you are getting.

If you need advice on how to get a local server up and running to serve your project, I recommend grunt-connect, for example like this (which will launch a server at 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'])
}



回答5:


I received this error as well, and I fixed it by changing my package.json "scripts" variable from:

"scripts": {
    ...
    "pree2e": "webdriver-manager update --standalone false --gecko false",
    "e2e": "protractor"
  }

to

"scripts": {
    ...
    // REMOVE "pree2e"
    "e2e": "ng e2e"
  }


来源:https://stackoverflow.com/questions/31752301/protractor-error-angular-could-not-be-found-on-the-page

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!