2012-01-30 71 views
2

我想在.Net中使用无头浏览器,并且我需要它来执行JavaScript,因为我需要使用它阅读的信息通过AJAX加载。经过一番研究,我相信我的最佳选择是HtmlUnit。我遵循Steven Sanderson的博客http://blog.stevensanderson.com/2010/03/30/using-htmlunit-on-net-for-headless-browser-automation/中的说明,主要内容非常棒。然而,尽我所能努力,我无法让它等待JavaScript加载。本质上,从选择框中选择一些东西后,AJAX请求会触发并填充另一个选择框。 HtmlUnit从未看到新的选项。HtmlUnit不等待AJAX​​执行

我尝试过所有FAQ http://htmlunit.sourceforge.net/faq.html#AJAXDoesNotWork中所有示例的组合,因此我只能假设它已转换为在.Net中运行的事实。我希望有人在这方面有一些经验,可以指出哪些问题是错误的。我觉得我正在用HtmlUnit正确的方式,并已经在这里推荐Is there a headless browser for .NET (for automated Web-UI-Tests)?headless internet browser?之前,但我已经到了死胡同。

所以,如果任何人有一个更好的选择支持JavaScript的头部浏览器,并想法如何让HtmlUnit等待JavaScript甚至只是一些建议如何进一步调试。

谢谢。

西蒙

+0

我不认为你可以整合jQuery和它的[的document.ready()](http://api.jquery.com/ready /)函数?可能需要一些调整,但这样浏览器会等待文档在HtmlUnit尝试完成之前完全加载。 – 2012-03-27 14:14:18

回答

4

我认为你需要使用webClient.waitForBackgroundJavaScript()webClient.waitForBackgroundJavaScriptStartingBefore()

你也可以看到这些链接可能对你很有帮助。

  1. HTMLUnit doesn't wait for Javascript
  2. HtmlUnit doesn't load externally referenced javascript
  3. htmlunit javascript question
+0

可悲的是我已经尝试过这两种方法,但都没有成功。由于证据表明他们应该工作,我只能得出这样的结论:这与网站的构建方式有关,而不是我可以在HTMLUnit中解决的问题。 – baynezy 2012-03-29 06:36:52