分度器でAngularアプリをテストしています。ドキュメントを調べましたが、アラートのテキストを取得する方法が見つかりません。それ自体はDOMの要素ではありません(少なくとも、私が理解できるわけではありません。アラートが発生すると、Chromeのインスペクターはそれを検査することを許可しません)。アラートのメッセージが正しいことをテストするにはどうすればよいですか? それとも、それは存在しますか?
編集
これが私のコードです。HTML:
<button id='alertButton' data-ng-click='ngAlert()'>Button</button>
JS:
$scope.ngAlert = function(){
window.alert('Hello');
};
分度器仕様:
describe('alert', function(){
var ptor = protractor.getInstance();
beforeEach(function(){
button = $('#alertButton');
button.click();
});
it('tells the alert message', function(){
expect(button.getText()).toEqual('Button');
});
});
ボタンのテキストに対して次のようにアサーションを作成すると、次のようになります。
it('tells the alert message', function(){
expect(button.getText()).toEqual('Button');
});
合格です。しかし、次のようなアラートを読み取ろうとすると:
it('tells the alert message', function(){
var alertDialog = ptor.switchTo().alert();
expect(alertDialog.getText()).toEqual('Hello');
});
次のエラーが表示されます。
$ protractor spec/e2e/conf.js http://localhost:4444/wd/hubでセレンサーバーを使用.F
失敗:
1) alert は警告メッセージを伝えます Message: NoSuchAlertError: no alert open (Session info: chrome=30.0.1599.101) (Driver info: chromedriver=2.2,platform=Mac OS X 10.9.0 x86_64) (WARNING: The server did not provide任意のスタック トレース情報) コマンド期間またはタイムアウト: 3 ミリ秒 ビルド情報: バージョン: '2.35.0'、リビジョン: 'c916b9d'、時間: '2013-08-12 15:42:01' システム情報: os.name: ' Mac OS X'、os.arch: 'x86_64'、os.version: '10.9'、java.version: '1.6.0_65' セッション ID: edbaa752eb14ad45f7e961903b69a466 ドライバー情報: org.openqa.selenium.chrome.ChromeDriver Capabilities [{platform =MAC, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={chromedriverVersion=2.2}, rotatable=false, locationContextEnabled=true, version=30.0.1599.101,cssSelectorsEnabled=true、databaseEnabled=true、handlesAlerts=true、browserConnectionEnabled=false、nativeEvents=true、webStorageEnabled=true、applicationCacheEnabled=false、takeScreenshot=true}]
2.125 秒で完了 2 つのテスト、2 つのアサーション、1 つの失敗
/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1542 エラーをスローします。^ NoSuchAlertError: アラートが開かれていません
しかし、ページでテストしたところ動作し、DOM でボタンを明確に見つけることができました。では、click()
機能が機能していないか、何か他のことが起こっているのでしょうか?