2012-07-29 17 views
6

el problema:síncrono carga JS externo con zombie.js

estoy usando zombie.js poner a prueba mi JavaScript del lado del cliente, pero estoy corriendo en un problema. Zombie.js no proporciona la ejecución de etiquetas sincrónicas <script> y, de hecho, parece que no ejecuta archivos JS externos. Una prueba básica confirma:

<script type="text/javascript" src="test1.js"></script> 
<script type="text/javascript" src="test2.js"></script> 
<script type="text/javascript" src="test3.js"></script> 

<script type="text/javascript"> 
    console.log("Inline javascript."); 
</script> 

cada prueba # Js contiene una sola línea: console.log("TEST#.JS");

cuando me hacen esto en un navegador normal, la consola muestra la esperada:

TEST1.JS 
TEST2.JS 
TEST3.JS 
Inline javascript. 

Pero cuando lo ejecuto con zombie.js, solo veo una sola línea Inline javascript.

Esto es lo que he intentado evitar con el problema:

  1. usando document.createElement para añadir dinámicamente una etiqueta de secuencia de comandos para el documento
  2. usando document.write para añadir el bloque de script en el HTML
  3. usando un setTimeout en console.log("Inline javascript") en combinación con 1 y 2 para dar los scripts de prueba algunos hora de cargar

¿Hay alguna manera de resolver este problema, además de colocar el código JS de todos mis archivos JS externos en un enorme bloque <script>?

+0

¿Ha considerado a PhantomJS como una alternativa al Zombie? – Spudley

+0

Sí, comencé con PhantomJS, pero hay varios errores que (es decir, navigator.onLine siempre es falso, etc.) que me hicieron alejarme de él. – laker

Respuesta

3

¿Estás seguro de que el objeto del navegador tiene la opción "runScripts" establecida en true? Si no puede usar la siguiente sintaxis:

browser.visit('... your page url ...', { runScripts: true }, function (e, b) { 
    console.log('executing callback'); 
}); 
Cuestiones relacionadas