无法使用 Selenium WebClient 或 HtmlUnitDriver 为 GWT 应用程序启用 javascript

Cannot enable javascript for GWT application using Selenium WebClient or HtmlUnitDriver

我正在尝试获取 HTML 页面源代码,以便使用 无头浏览器测试[=27] 测试 GWT 应用程序 的 GUI =].首先,我尝试使用 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();

第二种方法是使用 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();

然而,在这两种情况下,我得到了相同的结果。结果不包含页面的实际内容,显示如下:

</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>

有什么我可以 do/enable 来获取页面的实际内容吗?谢谢!

通过设置超时以便加载 javascript 文件解决了该问题。

所以,在这样做之后:

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

页面有内容,我可以找到预期的 DOM 元素。