2016-11-04 1 views
0

Je suis en train d'obtenir la source de la page HTML afin de tester l'interface graphique pour une application GWT en utilisant le test du navigateur sans tête . Tout d'abord j'ai essayé d'obtenir le contenu de la page en utilisant HtmlUnitDriver, comme ce qui suit:Impossible d'activer le javascript pour une application GWT utilisant Sélénium WebClient ou HtmlUnitDriver

DesiredCapabilities capabilities = DesiredCapabilities.htmlUnit(); 

//set an userId header 
capabilities.setCapability("id", "userId"); 

HtmlUnitDriver unitDriver = new HtmlUnitDriver(capabilities); 

//enabled javascript 
unitDriver.setJavascriptEnabled(true); 

unitDriver.get("http://localhost:portNo/example/"); 

String pageSource = unitDriver.getPageSource(); 

La deuxième façon de le faire est à l'aide WebClient:

WebClient webClient = new WebClient(); 

//enabled javascript 
webClient.getOptions().setJavaScriptEnabled(true); 

//set an userId header 
webClient.addRequestHeader("id", "userId"); 

HtmlPage page = webClient.getPage("http://localhost:portNo/example/"); 
String contentAsString = page.getWebResponse().getContentAsString(); 

Pourtant, dans le Dans les deux cas, j'ai le même résultat. Le résultat ne contient pas le contenu réel de la page, et il affiche les informations suivantes:

</iframe> 
    <!-- RECOMMENDED if your web app will not function without JavaScript enabled --> <noscript> 

     &lt;div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif"&gt; 
     Your web browser must have JavaScript enabled 
     in order for this application to display correctly. 
     &lt;/div&gt; 

    </noscript> 
    <iframe src="javascript:''" id="frameId" style="position:absolute;width:0;height:0;border:none" tabindex="-1"> 
    </iframe> 

Est-ce que je peux faire/activer afin d'obtenir le contenu réel de la page? Je vous remercie!

+0

Les deux, unitDriver.getPafeSource() et page.getWebReponse() retournent le contenu de la page hôte (voir http://www.gwtproject.org/doc/latest/DevGuideOrganizingProjects.html#DevGuideHostPage). C'est le contenu réel. Mais je soupçonne que vous voulez vérifier certains éléments après l'amorçage. Dans ce cas, vous devez utiliser l'API liée au DOM de HtmlUnit/WebClient (par exemple page.asText, page.getByXpath) –

+0

Merci pour la réponse, Alexander. Vous avez raison, je cherche des éléments DOM dans la page, mais le problème est que je n'en obtiens rien quand j'appelle unitDriver.findElementByClassName ("listGrid"), par exemple. De plus, la méthode page.asText() ne me fournit que le titre de la page, ce qui n'est pas très utile. –

Répondre

0

Résolution du problème en définissant un délai d'expiration pour le chargement des fichiers javascript.

Ainsi, après avoir fait ceci:

HtmlPage page = webClient.getPage("http://localhost:portNo/example/"); 
webClient.waitForBackgroundJavaScript(10000); //time in milliseconds 

la page avait le contenu et je peux trouver les éléments DOM attendus.