web-dev-qa-db-ja.com

分度器エラーAngularがページに見つかりませんでした

私はAngular(1.4)サイトの分度器(2.1.0)を使用してEnd-2-Endテストを設定しようとしています。Jasmineがインストールされており、ユニットテストは正常に機能しています。実行すると分度器index#/ログインページがブラウザーウィンドウに読み込まれますが、コードは実行されず、分度器はこのエラーを報告します

失敗:Angularページに見つかりませんでした 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);
        });

    });
});

ng-app = "main"がindex.htmlのhtml要素に設定されています。ウェブサイトは機能します。

何か案は?

11
nuander

皆様の入力に感謝します。最後に、すべてのindex.htmlファイルの内容を新しいファイルにコピーして、この問題を修正しました。どういうわけか、ファイルは分度器が好きではなかった方法で破損したようです。私はそれが簡単に聞こえることを知っていますが、私はこれに丸一日を無駄にしたので、それが誰かを助けることを願っています。

5
nuander

ログイン関数でbrowser.get()を実行する前にbrowser.ignoreSynchronization = true;を挿入してみてください。

9
Rahul Vig

Angular)を使用しないページに移動する必要がある場合は、browser.get()行の前に次のコード行を追加します。

browser.waitForAngularEnabled(false);

リファレンス: https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular-on-page-load

5
Mukesh Rajput

私もこのエラーを受け取り、package.jsonの "scripts"変数を次のように変更して修正しました。

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

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

サーバーを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'])
}
0
Raphi