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>
<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">
Your web browser must have JavaScript enabled
in order for this application to display correctly.
</div>
</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!
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) –
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. –