4

我正在尝试在页面中执行 javascript 代码后获取网页的内容。例如,假设我有以下页面:

<html>
<body>
  test:
  <div id="inner"></div>
  <script type="text/javascript">
    document.getElementById('inner').innerHTML = "Hello World!";
</script>
</body>
</html>

我要提取的是执行 javascript 后的页面,因此呈现的 html :

<html>
<body>
  test:
  <div id="inner">Hello World</div>
</script>
</body>
</html>

在htmlUnit中可以吗?

4

2 回答 2

3

我不确定您对该代码有什么问题,但它对我来说非常有效。

我创建了一个包含该内容的文件,我从获取页面内容中得到的结果是:

<?xml version="1.0" encoding="ISO-8859-1"?>
<html>
  <head/>
  <body>

  test:

    <div id="inner">
      Hello World!
    </div>
    <script type="text/javascript">
//<![CDATA[

    document.getElementById('inner').innerHTML = "Hello World!";

//]]>
    </script>
  </body>
</html>

这是您需要的所有代码:

WebClient webClient = new WebClient();
HtmlPage page = webClient.getPage("the_url");
System.out.println(page.asXml());

您可能还会发现这个问题很有用:

于 2013-11-07T17:08:57.053 回答
1

我希望我正确理解了你的问题。htmlUnit确实支持 JavaScript 代码的执行。查看本教程,它可能会帮助您入门。

htmlUnit此外,如果您在专业环境中进行应用程序测试,尤其是在规模较大的情况下,那么我建议您使用比Selenium更高级的东西。

于 2013-11-07T12:24:43.703 回答