5

テスト中にゾンビ.jsを使用してローカルエクスプレスサーバーからページをロードしています。残念ながら、GoogleAnalyticsを呼び出すスクリプト要素があります。可能であれば、他の(ローカル)スクリプトの読み込みを妨げずに、この外部スクリプトを(適切に)ブロックしたいと思います。

私はそれ{ runScripts : false }がへの呼び出しで利用可能であることを知っていますbrowser.visit()。ただし、他のホストに存在するスクリプトだけでなく、ページ上のすべてのスクリプトをロードすることを拒否します。これは可能ですか?

4

3 に答える 3

8

ゾンビ3.1以降、browser.resources.mockメソッドはなくなりました。nock別の方法は、ライブラリを使用することです。

var nock = require('nock')

nock('http://www.google-analytics.com')
  .get('/analytics.js')
  .times(Math.Infinity)
  .reply(200, '{}')

var Browser = require('zombie')
var browser = new Browser()
于 2015-06-03T17:42:17.697 に答える
7

リソースオブジェクトを使用する必要があります。

リクエストを実際に通過させたくない場合は、特定のリクエストを設定して特定の応答を返すことができます。グーグルアナリティクスが空のドキュメントを返すようにするには、次のようにします。

browser.resources.mock('http://google.com/url/to/analytics.js',{});

モックする正確なURLを指定する必要があることに注意してください。ドメイン名など、部分的なURLをモックする方法はありません。

于 2013-04-30T18:12:42.290 に答える
1

たぶん、このようなものがあなたのために働くでしょうか?すべてのリソースをループし、無視する必要のあるリソースを「中止」します。

const Fetch = require('zombie/lib/fetch');

const ignoredResources = [
  'google-analytics.com'
];

browser.pipeline.addHandler((browser, request) => {
  let doAbort = false;

  ignoredResources.forEach(domain => {
    if (request.url.includes(domain)) {
      doAbort = true;
    }
  });

  if (doAbort) {
    return new Fetch.Response('', { status: 200 });
  }
});
于 2017-08-16T05:00:32.220 に答える