【问题标题】:HtmlUnit not waiting for AJAX to executeHtmlUnit 不等待 AJAX 执行
【发布时间】:2012-02-22 10:09:49
【问题描述】:

我正在尝试在 .Net 中使用无头浏览器,我需要它来执行 JavaScript,因为我需要使用它读取的信息是通过 AJAX 加载的。经过一些研究,我相信我最好的选择是 HtmlUnit。我主要按照 Steven Sanderson 的博客 http://blog.stevensanderson.com/2010/03/30/using-htmlunit-on-net-for-headless-browser-automation/ 中的说明进行操作,效果很好。但是,尽我所能,我无法让它等待 JavaScript 加载。基本上在从选择框中选择某些内容后,AJAX 请求会触发并填充另一个选择框。 HtmlUnit 永远不会看到新选项。

我已经尝试了常见问题解答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 的 headles 浏览器有更好的选择,以及如何让 HtmlUnit 等待 JavaScript 的想法,或者甚至只是关于如何进一步调试的一些建议。

谢谢。

西蒙

【问题讨论】:

  • 我不认为你可以集成jQuery和它的document.ready()函数?可能需要一些调整,但这样浏览器会在 HtmlUnit 尝试执行其操作之前等待文档完全加载。

标签: .net testing automation htmlunit ikvm


【解决方案1】:

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

您还可以查看这些可能对您帮助不大的链接。

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

【讨论】:

  • 可悲的是,我已经尝试了这两种方法,但都没有工作。由于有证据表明它们应该起作用,我只能得出结论,这与网站的构建方式有关,而不是我可以在 HTMLUnit 中解决的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-03
相关资源
最近更新 更多