Evita que zombie.js cargue solo resources externos

Estoy usando zombie.js para cargar una página de un server express local durante una testing. Desafortunadamente, hay un elemento de script que llama a Google Analytics. Me gustaría bloquear este script externo (con gracia) sin evitar que se carguen otros scripts (locales), si es posible.

Sé que { runScripts : false } está disponible con llamadas a browser.visit() . Sin embargo, se niega a cargar todos y cada uno de los scripts en la página, no solo aquellos que viven en otros hosts. es posible?

3 Solutions collect form web for “Evita que zombie.js cargue solo resources externos”

Deberías usar el object de resources .

Puede configurar ciertas requestes para dar respuestas específicas si no desea que la request se realice realmente. Haría lo siguiente para que google analytics devuelva un documento vacío:

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

Tenga en count que debe proporcionar la URL exacta que desea simular, no hay forma de simular una URL parcial, como un nombre de dominio.

Desde zombie 3.1 , el método browser.resources.mock se ha ido. La alternativa es usar la biblioteca 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() 

Tal vez algo así podría funcionar para usted? Pasa por todos los resources y "cancela" los que deberían ignorarse.

 const Fetch = require('zombie/lib/fetch'); const ignonetworkingResources = [ 'google-analytics.com' ]; browser.pipeline.addHandler((browser, request) => { let doAbort = false; ignonetworkingResources.forEach(domain => { if (request.url.includes(domain)) { doAbort = true; } }); if (doAbort) { return new Fetch.Response('', { status: 200 }); } }); 
Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.