2011-05-04 3 views
0

Je souhaite utiliser WebDriver pour exécuter des javascripts sur l'application que je suis en train de tester. Im en utilisant le code suivant:executeScript WebDriver

JavascriptExecutor js = (JavascriptExecutor) driver; 
String label = (String)js.executeScript("return document.g.nodes[1].label", null); 

g objet global javascript dans la page. si je l'inspecte à partir de la console en utilisant les éléments inspectés, je vois que tout est là ... cependant quand j'exécute ce script, je lance une exception indiquant "Impossible de créer une propriété de noeud à partir de non défini".

La sorcière g est pour une raison indéfinie dans la page.

quelqu'un a des idées?

ce n'est pas un problème de synchronisation car je travaille dans le débogage et manuellement pour que la page se charge complètement.

grâce

Répondre

1

sont pas des objets javascript attachés à la fenêtre plutôt que document?

Au moins, j'ai toujours utilisé window.whatever de webdriver et ça marche bien.

+0

Quelle est la différence entre la fenêtre et le document? Plus précisément, différence entre document.activeElement et window.activeElement –

-1

Je pense que ce fil peut être utile. Si vous n'êtes pas familier avec eval, il semble y avoir un moyen plus facile.

Le lien fait référence à ScriptEngineManager.

ScriptEngineManager manager = new ScriptEngineManager(); 
ScriptEngine engine = manager.getEngineByName("js");   
Object result = engine.eval("3+4"); 

Is there an eval() function in Java?

+0

Les liens ne sont pas autorisés en tant que réponses lors du débordement de pile. Vous devez également inclure le contenu important du lien. – BradleyDotNET

+0

Merci pour le protip. J'ai édité la réponse. J'espère que c'est utile. –