web-dev-qa-db-ja.com

分度器からウィンドウオブジェクト/ブラウザスコープにアクセスする

分度器でテストを実行していますが、JSの「ウィンドウ」オブジェクトにアクセスできないようです。私はhtmlファイルに次のようなものを含むタグを追加しようとしました

var a = window.location;

そして、expect(a)を試してみますが、機能させることができませんでした。常に未定義の参照を取得しています...

ブラウザスコープ内の変数にアクセスするには、どのように処理すればよいですか?

21
hilnius

最近のバージョンの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
});
26
Leo Gallucci