Creando y ejecutando una función de Javascript con Selenium.

Estoy tratando de crear y ejecutar una función de JavaScript con Selenium. Lo estoy haciendo así:

js_func = """ function blah(a, b, c) { . . . }; """ self.selenium.execute_script(js_script) self.selenium.execute_script("blah", 1,2,3) 

No recibo ningún error del primero (creando la función), pero el segundo me da:

 WebDriverException: Message: u'blah is not defined' 

¿Lo que estoy haciendo es válido? ¿Cómo puedo saber si la función se creó correctamente? ¿Cómo puedo ver los errores (asumiendo que hay errores)?

Así es como Selenium ejecuta JavaScript :

El fragmento de script proporcionado se ejecutará como el cuerpo de una función anónima.

En efecto, su código es:

 (function() { function blah(a, b, c) { ... } })(); (function() { blah(1, 2, 3); }); 

Y debido a las reglas de scope de JavaScript, blah no existe fuera de esa función anónima. Tendrás que convertirla en una función global:

 window.blah = function(a, b, c) { ... } 

O ejecuta ambos scripts en la misma función llamada.