分度器でテストを実行していますが、JSの「ウィンドウ」オブジェクトにアクセスできないようです。私はhtmlファイルに次のようなものを含むタグを追加しようとしました
var a = window.location;
そして、expect(a)を試してみますが、機能させることができませんでした。常に未定義の参照を取得しています...
ブラウザスコープ内の変数にアクセスするには、どのように処理すればよいですか?
最近のバージョンのProtractorを使用していると仮定して、> = 1.1.0、できれば> = 1.3.1としましょう。
ProtractorはNodeJSで実行され、すべてのブラウザー側のコードはSelenium JsonWireProtocol を介して実行されるため、Protractorから直接ブラウザー側のJSコードにアクセスしようとしても機能しません。
さらに詳細な説明なしで、実際の例:
browser.get('https://angularjs.org/');
ワンライナーは、今日現在、'1.3.0-rc.3'
browser.executeScript('return window.angular.version.full;');
分度器の期待があなたのための約束を解決するならば、あなたはそれを期待ステートメントで直接使うことができます:
expect(browser.executeScript('return window.angular.version.full;')).
toEqual('1.3.0-rc.3');
expect
を使用せずに文字列の代わりに関数を渡す長い例では、promiseが解決されません。つまり、より多くの制御のために、そして結果を使っていくつかの派手なことをするためです。
browser.driver.executeScript(function() {
return window.angular.version.full;
}).then(function(result) {
console.log('NodeJS-side console log result: ' + result);
//=> NodeJS-side console log result: 1.3.0-rc.3
});