问题标签 [htmlunit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3284 浏览

java - HtmlUnit 浏览页面时是否加载图像?

如上。它会加载图像吗?

0 投票
2 回答
421 浏览

web-crawler - HtmlUnit - ElementNotFound 异常

我正在使用 HtmlUnit [请参阅使用 C# 测试网站],我遇到了一个奇怪的问题:
我试图调用一个页面,单击一个按钮并检索后续页面。它工作正常,但有时当我尝试为检索到的页面中的字段设置 value 属性时,它会出现 ElementNotFoundException 。

我尝试添加一个睡眠(1000),但它没有帮助......

任何想法?

0 投票
2 回答
3382 浏览

java - 如何在 HtmlUnit 测试用例中添加用户名/密码认证信息?

我正在通过 http 协议访问 svn 存储库。当我将 url 输入 Internet Explorer 时,它会提示我输入用户名/密码的对话框,然后文件会在浏览器中正确加载。

我需要做的是从这个 svn 存储库中下载大量来自不同标签的文件。我试图使用 HtmlUnit 自动下载这些文件。不幸的是,它给了我“需要 401 授权 ...”错误。我不知道如何在我的 HtmlUnit 测试中设置用户 ID/密码信息。

请问有好心人能帮帮我吗?

0 投票
1 回答
3301 浏览

java - 使 AJAX 应用程序可抓取?如何在 Google App Engine 上构建一个简单的 Web 服务来生成 HTML 快照?

现实世界的问题:

我的应用程序托管在Heroku上,据我所知,Heroku 无法提供运行无头(无 GUI)浏览器(例如HTMLUnit )的解决方案,以便为 Googlebot生成HTML 快照以索引我的 AJAX 内容。

我提出的解决方案:

如果您还没有,我建议您阅读 Google 的Full Specification for Making AJAX Applications Crawlable

想象一下我有:

  • 托管在域上 Heroku 上的Sinatra应用程序http://example.com
  • 该应用程序在页面顶部有选项卡TabA、TabB 和 TabC
  • 每个选项卡下是SubTab1、SubTab2、SubTab3
  • onload 如果 url 是http://example.com#!tab=TabA&subtab=SubTab3然后客户端 Javascriptlocation.hash通过 AJAX 获取并加载 TabA、SubTab3 内容。

注意:Hash Bang (#!) 是google spec的一部分。

我想构建一个托管在Google App Engine (GAE) 上的简单“网络服务”:

  1. 接受一个 URL 参数,例如http://htmlsnapshot.appspot.com?url=http://example.com#!tab=TabA&subtab=SubTab3(url 参数应该是 URLEncoded)
  2. 运行 HTMLUnit 以http://example.com#!tab=TabA&subtab=SubTab3在服务器上打开和运行客户端 JavaScript。
  3. 一旦一切都完成(或者像 45 秒过去),HTMLUnit 会返回 DOM。
  4. 返回内容可以通过 JSON/JSONP 发回,或者将 URL 返回到生成并存储在 google 应用引擎服务器上的文件(用于基于文件的“缓存”结果)......在此处接受建议。如果返回文件的 URL,那么您可以CURL来获取源代码(也称为 HTML 快照)。

我的http://example.com应用程序需要管理对http://htmlsnapshot.appspot.com... 的调用,基本上:

  1. 捕获 Googlebots 调用http://example.com/?_escaped_fragment_=tab=TabA%26subtab=SubTab3(googlebot 爬虫转义某些字符,例如 %26 = &)。
  2. 从后端发送请求到http://htmlsnapshot.appspot.com?url=http://example.com#!tab=TabA&subtab=SubTab3(url 参数应该是 URLEncoded)
  3. 将返回的 HTML Snapshot 渲染到前端。
  4. 谷歌索引内容,我们很高兴!

我没有任何使用 Google App Engine 或 Java 或 HTMLUnit 的经验。

我也许能够弄清楚......如果我这样做了,我会发布我的结果。

否则,我觉得这是一个非常好的机会,可以让某人写一篇精彩的博客文章,其中概述了新手设置此类 Web 服务的分步指南。

这将向更多人介绍优秀(而且免费!)的 Google App Engine。此外,它无疑会鼓励更多人采用 Google 的可抓取 AJAX 内容规范……我们都可以从中受益!

随着 Google 的规范获得更多接受,设置无头浏览器的“障碍”将让许多开发人员在谷歌上搜索答案!现在就加入名誉和荣耀的答案吧!(编辑:至少我会赞美你)。

@_chrisjacob如果您想讨论解决方案,请在推特上联系我。

0 投票
1 回答
1533 浏览

groovy - 无法使用 HtmlUnit 以编程方式提交表单

我在 Groovy 脚本中使用 HtmlUnit 从 www.goodreads.com 站点获取 csv 文件。这个脚本直到最近才工作,出现了一些奇怪的 SSL 错误。

这是使用的 Groovy 代码

以及相关的@Grab

每次运行这段代码时,我都有

第 184 行是signInForm.getInputByName("next").click()我认为错误发生的地方之一。也许这与 goodreads SSL 的实现选择有关,即

考虑到我可以使用 Opera、Firefox 正确登录该站点,该错误是如何出现的?而且,更重要的是,我能做些什么来解决它?

Additionnaly 通知表单目的地是 url https://www.goodreads.com/user/sign_in

打开此 URL 可访问 Opera 指示为 TLS v1.0 256 位 AES(1024 位 DHE_RSA/SHA)的页面

0 投票
1 回答
1363 浏览

java - HtmlUnit 在 window.open 之后停止 JavaScript 执行

我最近从 HTMLUnit 2.4 更新到 2.5(我们会选择最新版本,但由于 API 已弃用,有很多代码需要重构)。我现在遇到了一些打开窗口的 JavaScript 问题。

正在测试的页面是报告的“加载屏幕时请稍候”。该页面打开一个新窗口,然后重定向回最初启动打印的页面。

所以 JavaScript 看起来像:

使用 HtmlUnit 2.4,脚本将继续执行,如果我抓取原始 Window 对象,它将执行重定向。但是,升级到 HtmlUnit 2.5 后,原始窗口仍然在“请稍候”页面上 - 永远不会执行重定向。似乎 JavaScript 在调用 window.open 后停止执行。

如果我手动测试,我已经确认页面行为正确。在 window.open 调用之后,我还尝试了不同的 JavaScript,以确认该特定调用不是问题。

有人知道这样的问题以及任何潜在的解决方法吗?由于 jQuery 兼容性,我们必须继续使用 HtmlUnit 2.5。

0 投票
17 回答
42275 浏览

warnings - 关闭 HtmlUnit 警告

你知道如何关闭 HtmlUnit 中的警告、注释、错误吗?

0 投票
1 回答
590 浏览

java - 如何在 HtmlUnit 的网页上获取 ajax 更新的文本值?

我在这里有一个网站,由 Ajax 不断更新。我在 Java 中使用 HtmlUnit,需要获取更新的文本值,但我不知道如何。

例如:文本值。当“TextValue”更改时,我如何访问新值?我知道有一个 DomChangeListener (用于添加或删除的节点)和一个 HtmlAttributeChangeListener 但我看不到获取更改的文本值的方法。

它不一定是通知(事件),我可以每隔 x 秒手动检查一次值,但我尝试的唯一方法是按 page.asXML 和 page.asText,但源永远不会更新,值始终是页面加载时的第一个值。

任何人都知道如何完成这项任务?也许是另一个框架或完全不同的方式来做到这一点?谢谢。

编辑:它应该在服务器上无头运行。并且任务不是一直刷新页面以获取更新的源代码。

0 投票
3 回答
1743 浏览

javascript - 如何使我的 AJAX 内容可被 Google 抓取?

我一直在开发一个大量使用 jQuery 并通过 AJAX 加载内容的网站,如下所示:

现在我注意到 Google 不会通过 Javascript 为任何动态加载的内容编制索引,因此我一直在寻找解决该问题的方法。

我已经阅读了 Google 的Making AJAX Applications Crawlable文档似乎 100 次,但我仍然不明白如何实现它(主要是由于我对服务器的了解有限)。

所以我的第一个问题是:

  • 是否有一个体面的分步教程,从头到尾记录您所知道的?我试过用谷歌搜索它,但没有发现任何有用的东西。

其次,如果还没有任何东西,任何人都可以解释:

  1. 如何“设置我的服务器以处理对包含 _escaped_fragment_ 的 URL 的请求”

  2. 如何在我的服务器上实现HtmlUnit以创建页面的“HTML 快照”以显示给爬虫。

如果有人能为我阐明这一点,我将不胜感激,在此先感谢!

-本

0 投票
1 回答
883 浏览

proxy - HTMLUnit如何检查代理是否正常工作

你知道我可以做些什么来检查 WebBrowser 中的代理是否正常工作吗?