问题标签 [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.
java - HtmlUnit 浏览页面时是否加载图像?
如上。它会加载图像吗?
web-crawler - HtmlUnit - ElementNotFound 异常
我正在使用 HtmlUnit [请参阅使用 C# 测试网站],我遇到了一个奇怪的问题:
我试图调用一个页面,单击一个按钮并检索后续页面。它工作正常,但有时当我尝试为检索到的页面中的字段设置 value 属性时,它会出现 ElementNotFoundException 。
我尝试添加一个睡眠(1000),但它没有帮助......
任何想法?
java - 如何在 HtmlUnit 测试用例中添加用户名/密码认证信息?
我正在通过 http 协议访问 svn 存储库。当我将 url 输入 Internet Explorer 时,它会提示我输入用户名/密码的对话框,然后文件会在浏览器中正确加载。
我需要做的是从这个 svn 存储库中下载大量来自不同标签的文件。我试图使用 HtmlUnit 自动下载这些文件。不幸的是,它给了我“需要 401 授权 ...”错误。我不知道如何在我的 HtmlUnit 测试中设置用户 ID/密码信息。
请问有好心人能帮帮我吗?
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) 上的简单“网络服务”:
- 接受一个 URL 参数,例如
http://htmlsnapshot.appspot.com?url=http://example.com#!tab=TabA&subtab=SubTab3
(url 参数应该是 URLEncoded) - 运行 HTMLUnit 以
http://example.com#!tab=TabA&subtab=SubTab3
在服务器上打开和运行客户端 JavaScript。 - 一旦一切都完成(或者像 45 秒过去),HTMLUnit 会返回 DOM。
- 返回内容可以通过 JSON/JSONP 发回,或者将 URL 返回到生成并存储在 google 应用引擎服务器上的文件(用于基于文件的“缓存”结果)......在此处接受建议。如果返回文件的 URL,那么您可以CURL来获取源代码(也称为 HTML 快照)。
我的http://example.com
应用程序需要管理对http://htmlsnapshot.appspot.com
... 的调用,基本上:
- 捕获 Googlebots 调用
http://example.com/?_escaped_fragment_=tab=TabA%26subtab=SubTab3
(googlebot 爬虫转义某些字符,例如 %26 = &)。 - 从后端发送请求到
http://htmlsnapshot.appspot.com?url=http://example.com#!tab=TabA&subtab=SubTab3
(url 参数应该是 URLEncoded) - 将返回的 HTML Snapshot 渲染到前端。
- 谷歌索引内容,我们很高兴!
我没有任何使用 Google App Engine 或 Java 或 HTMLUnit 的经验。
我也许能够弄清楚......如果我这样做了,我会发布我的结果。
否则,我觉得这是一个非常好的机会,可以让某人写一篇精彩的博客文章,其中概述了新手设置此类 Web 服务的分步指南。
这将向更多人介绍优秀(而且免费!)的 Google App Engine。此外,它无疑会鼓励更多人采用 Google 的可抓取 AJAX 内容规范……我们都可以从中受益!
随着 Google 的规范获得更多接受,设置无头浏览器的“障碍”将让许多开发人员在谷歌上搜索答案!现在就加入名誉和荣耀的答案吧!(编辑:至少我会赞美你)。
@_chrisjacob
如果您想讨论解决方案,请在推特上联系我。
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)的页面
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。
warnings - 关闭 HtmlUnit 警告
你知道如何关闭 HtmlUnit 中的警告、注释、错误吗?
java - 如何在 HtmlUnit 的网页上获取 ajax 更新的文本值?
我在这里有一个网站,由 Ajax 不断更新。我在 Java 中使用 HtmlUnit,需要获取更新的文本值,但我不知道如何。
例如:文本值。当“TextValue”更改时,我如何访问新值?我知道有一个 DomChangeListener (用于添加或删除的节点)和一个 HtmlAttributeChangeListener 但我看不到获取更改的文本值的方法。
它不一定是通知(事件),我可以每隔 x 秒手动检查一次值,但我尝试的唯一方法是按 page.asXML 和 page.asText,但源永远不会更新,值始终是页面加载时的第一个值。
任何人都知道如何完成这项任务?也许是另一个框架或完全不同的方式来做到这一点?谢谢。
编辑:它应该在服务器上无头运行。并且任务不是一直刷新页面以获取更新的源代码。
javascript - 如何使我的 AJAX 内容可被 Google 抓取?
我一直在开发一个大量使用 jQuery 并通过 AJAX 加载内容的网站,如下所示:
现在我注意到 Google 不会通过 Javascript 为任何动态加载的内容编制索引,因此我一直在寻找解决该问题的方法。
我已经阅读了 Google 的Making AJAX Applications Crawlable文档似乎 100 次,但我仍然不明白如何实现它(主要是由于我对服务器的了解有限)。
所以我的第一个问题是:
- 是否有一个体面的分步教程,从头到尾记录您所知道的?我试过用谷歌搜索它,但没有发现任何有用的东西。
其次,如果还没有任何东西,任何人都可以解释:
如何“设置我的服务器以处理对包含 _escaped_fragment_ 的 URL 的请求”
如何在我的服务器上实现HtmlUnit以创建页面的“HTML 快照”以显示给爬虫。
如果有人能为我阐明这一点,我将不胜感激,在此先感谢!
-本
proxy - HTMLUnit如何检查代理是否正常工作
你知道我可以做些什么来检查 WebBrowser 中的代理是否正常工作吗?