私は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要素に設定されています。ウェブサイトは機能します。
何か案は?
皆様の入力に感謝します。最後に、すべてのindex.htmlファイルの内容を新しいファイルにコピーして、この問題を修正しました。どういうわけか、ファイルは分度器が好きではなかった方法で破損したようです。私はそれが簡単に聞こえることを知っていますが、私はこれに丸一日を無駄にしたので、それが誰かを助けることを願っています。
ログイン関数でbrowser.get()
を実行する前にbrowser.ignoreSynchronization = true;
を挿入してみてください。
Angular)を使用しないページに移動する必要がある場合は、browser.get()行の前に次のコード行を追加します。
browser.waitForAngularEnabled(false);
リファレンス: https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular-on-page-load
私もこのエラーを受け取り、package.jsonの "scripts"変数を次のように変更して修正しました。
"scripts": {
...
"pree2e": "webdriver-manager update --standalone false --gecko false",
"e2e": "protractor"
}
に
"scripts": {
...
// REMOVE "pree2e"
"e2e": "ng e2e"
}
サーバーを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'])
}