问题标签 [http-unit]
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.
eclipse - httpunit 中的异常
我有一个 HttpUnit 代码,我正在尝试访问谷歌的官方网站。这是我的代码:
/** 你需要启动的一切都在 com.meterware.httpunit 包中 **/ import com.meterware.httpunit.*;
/** 这是一个使用 HttpUnit 阅读和理解网页的简单示例。**/ 公共类示例 {
}
我在运行代码时遇到以下异常。我使用 eclipse 作为 IDE。
org.mozilla.javascript.EcmaError: TypeError: Cannot read property "className" from undefined (httpunit#3) at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3229) at org.mozilla.javascript.ScriptRuntime.constructError (ScriptRuntime.java:3219) 在 org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3235) 在 org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3254) 在 org.mozilla.javascript.ScriptRuntime。 undefReadError(ScriptRuntime.java:3267) at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1324) at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:2816) at script(httpunit:3) at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:2251) 在 org.mozilla.javascript.InterpretedFunction。在 org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2758) 在 org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:340) 在 org.mozilla.javascript.InterpretedFunction 调用(InterpretedFunction.java:161) .exec(InterpretedFunction.java:172) 在 org.mozilla.javascript.Context.evaluateString(Context.java:1132) 在 com.meterware.httpunit.javascript.ScriptingEngineImpl.runScript(ScriptingEngineImpl.java:92) 在 com.meterware。 httpunit.scripting.ScriptableDelegate.runScript(ScriptableDelegate.java:88) 在 com.meterware.httpunit.parsing.NekoDOMParser.runScript(NekoDOMParser.java:151) 在 com.meterware.httpunit.parsing.ScriptFilter.getTranslatedScript(ScriptFilter.java: 150) 在 com.meterware.httpunit.parsing.ScriptFilter.endElement(ScriptFilter.java:131) 在 org.cyberneko.html.filters。DefaultFilter.endElement(DefaultFilter.java:249) at org.cyberneko.html.filters.NamespaceBinder.endElement(NamespaceBinder.java:367) at org.cyberneko.html.HTMLTagBalancer.callEndElement(HTMLTagBalancer.java:1015) at org.cyberneko .html.HTMLTagBalancer.endElement(HTMLTagBalancer.java:888) 在 org.cyberneko.html.HTMLScanner$SpecialScanner.scan(HTMLScanner.java:2831) 在 org.cyberneko.html.HTMLScanner.scanDocument(HTMLScanner.java:809) 在org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:478) at org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:431) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) at com.meterware.httpunit.parsing.NekoHTMLParser.parse(NekoHTMLParser.java:48) at com.meterware.httpunit。HTMLPage.parse(HTMLPage.java:271) 在 com.meterware.httpunit.WebResponse.getReceivedPage(WebResponse.java:1301) 在 com.meterware.httpunit.WebResponse.getFrames(WebResponse.java:1285) 在 com.meterware.httpunit .WebResponse.getFrameRequests(WebResponse.java:1024) 在 com.meterware.httpunit.FrameHolder.updateFrames(FrameHolder.java:179) 在 com.meterware.httpunit.WebWindow.updateFrameContents(WebWindow.java:315) 在 com.meterware。 httpunit.WebClient.updateFrameContents(WebClient.java:526) 在 com.meterware.httpunit.WebWindow.updateWindow(WebWindow.java:201) 在 com.meterware.httpunit.WebWindow.getSubframeResponse(WebWindow.java:183) 在 com.meterware .httpunit.WebWindow.getResponse(WebWindow.java:158) 在 com.meterware.httpunit.WebClient.getResponse(WebClient.java:122) 在 Example.main(Example.java:14) 例外:com.meterware.httpunit.ScriptException: Script '//用于 3pas 中的 perf 信标 rtTop = Number(new Date());
OnloadCache.enable();
任何帮助将不胜感激。谢谢。enter code here
submit - 在 HTMLUnit 中使用表单上下文提交表单
我有一个项目,我将一些旧的 HTTPUnit 代码转换为 HTMLUnit。我遇到的问题之一是 HTTPUnit 的 form.submit() 选项。如果我在之前初始化表单变量时选择了正确的表单,则 form.submit 无需专门查找该特定表单的提交按钮即可工作.
我可以使用 HTMLUnit 中的类似内容吗?
只是为了解释我所问的意义,我正在测试一个包含多个表单(针对不同产品)的购物网站,每个表单都有自己的表单按钮,没有特定的属性来分隔它们。每个表单都有自己不同的结构,因此使用 xpath 找到提交按钮有点困难。
具体来说,我要问的是 HTMLUnit 中是否有一种方法可以根据表单本身而不是特定的提交按钮提交表单?如果没有上述情况,有人可以提出解决方法吗?
提前致谢。
java - 如何处理 HttpUnit 中的会话
我正在使用 HttpClient 处理会话。这是我使用 httpclient 处理会话的代码。但是 httpclient 不会处理 ajax 调用。我打算搬到 httpunit 来解决我的问题。基本上我有一个推荐 URL(或身份验证服务器),我需要从中获取 cookie 和会话并将其存储在客户端中。并在整个网站上使用此客户端来获取登录的用户信息。使用 httpunit 的适当解决方案是什么?credentialsURL="https://www.,,,,.com./sapLogin.aspx?HOOK_URL=https://authentication.server.address&username=&password= ";
java - 如何在 Eclipse 中测试动态 Web 项目?
我使用 JSP 和 servlet 在 Eclipse 中构建了一个“动态 Web 项目”。
我想使用框架测试这个项目。我是测试驱动开发的新手。
在搜索了如何使用导航测试servlet和Jsp之后,我发现以下任一框架都可用于测试servlet
1) HttpUnit 2) HtmlUnit 3) JWebUnit
哪个是一个好用且易于使用的框架?
我主要关心的是测试 Jsp 中的导航。我无法找到任何合适的指南或一段代码来测试 Servlet 和 Jsp 以及导航。
任何人都可以向我简要介绍一个jsp和一个servlet测试代码以及导航吗?或给我一个链接,我可以在其中找到此功能
java - Tomcat 阻塞且无响应
我有一个 tomcat 服务器,我正在使用 junitperf 对其进行性能测试。
我每次创建 20 个并发请求。
好的,问题来了:有时,它返回非常快,所有 20 个请求都在 3 秒内响应;但在其他时候,它似乎永远阻塞并且永远不会完成(实际上,这些请求中大约有 18、19 个会完成,但其余 1 或 2 个只是被永远阻塞)
这是我尝试调试问题的方法:
在客户端:
在服务器端,在 servlet 函数的第一行,我有:
现在,当它阻塞时,在客户端我可以看到 20 个“调用前”和 18,19 个“调用...”。在服务器端,我也只看到 18,19 条“Enter Servlet”日志。
所以我认为问题是,客户端已经发送了请求,但是 Tomcat 服务器没有响应它们,甚至没有调用 Servlet 函数。
同时,当我检查日志时,我没有发现它为什么被阻止。没有错误信息,没有异常,什么都没有。
有人可以帮我弄这个吗?
编辑#2:
这是一个完整的线程转储:
java - 当 Class 扩展 JFrame 时,httpunit 不工作
尝试https://www.okcupid.com/login
使用httpunit
库登录时,以下代码成功执行。
但是,如果我扩展类以JFrame
构建 UI,则执行失败。请求正常完成,POST
但GET
执行时请求失败HtmlPage page = wc.getPage(url)
在代码下方,我将两种情况的输出都放在了下面。
除非 Main 扩展 JFrame 否则有效
Main 扩展 JFrame 时的输出
Main 不扩展 JFrame 时的输出
java - 如何告诉 HttpUnit 对于 http 状态 4xx 不会失败?
在我的单元测试中,我目前有以下代码:
这是相当冗长的。我更喜欢使用这样的东西:
我如何告诉 HttpUnit 不会因为 http 状态 4xx 而失败?
eclipse - 在 Eclipse 中找不到 HttpUnit 导入
我正在尝试开始使用 HttpUnit。我用一个简单的例子制作了一个 Eclipse 项目,但似乎有一个永无止境的未解决依赖项和它找不到的导入流。所以我重新开始:
我只想让本教程工作:http ://www.httpunit.org/doc/tutorial/
我的 jars 文件夹包含:
我的 .classpath 文件说:
为什么无法解析以下导入?
谢谢
java - HttpUnit - 如何使用 getTextBlocks
我想知道如何使用 http 单元访问网页中的所有文本。我遇到的问题是getTextBlocks
似乎只返回h1
..h6
标签中的文本。我想找到下面 HTML 片段中包含的文本“Support LS”。请原谅我的简短问题,但谷歌搜索httpunit getTextBlocks
不会返回许多有用的匹配项。我想知道是否必须递归地降低文本块,因为每个文本块似乎都有一个getTextBlocks
- 方法。
office365 - 通过 Office365 登录从后端定位 Yammer API
这是我的问题:
完全从后端,我想使用 Yammer API,而不需要任何真正的用户操作。为此,首先我必须检索一个令牌。
要检索令牌,我必须登录。从后端我使用com.meterware.httpunit pacakge发送 http 请求和接收响应。
所以我发出 GET 请求来检索 yammer 登录页面。然后,我以编程方式填写并提交登录表单。
您可以在此处获取实现示例:Yammer-Java-SDK。
看起来像 :
不幸的是,我所针对的 Yammer 项目已嵌入到 Office365 中。因此,当我提交原始 yammer 登录表单时,我得到了 Office365 登录页面作为响应。本来可以的:检索 office365 表格,填写并提交……但事实并非如此!
office365 登录表单是通过 JavaScript 引擎构建的。在普通的互联网浏览器中没有问题。但是当我在后端时,我从 org.mozilla.rhino (v1.7.10) 获得的 Javascript 引擎无法正确执行脚本......脚本没有执行 -> 表单没有已构建-> 我无法发布它-> 我无法检索令牌-> 我无法从我的服务器在 yammer 上发布内容... :(
当然,我已经在我的 HttpUnitOptions 中启用了脚本:
在那里,我从 office365 登录页面得到的错误:
原型={redirectIfNecessary:function(e){window.top!=window&&window.top.location.replace(e.href)}},t.default=i},vP7g:function(e,t,r){"使用strict";var i=o(r("Jpbm")),n=o(r("6Tns"));function o(e){return e&&e.__esModule?e:{default:e}}(new i .default).redirectIfNecessary(window.location),(new n.default).redirectIfNecessary(window.location)}},[8]);' 失败:org.mozilla.javascript.EcmaError: TypeError: Impossible dappeler la method "{1}" de {0} 默认).redirectIfNecessary(window.location)}},[8]);' 失败:org.mozilla.javascript.EcmaError: TypeError: Impossible dappeler la method "{1}" de {0} 默认).redirectIfNecessary(window.location)}},[8]);' 失败:org.mozilla.javascript.EcmaError: TypeError: Impossible dappeler la method "{1}" de {0}
这里是根异常被捕获并重新抛出的函数:
来自:com.meterware.httpunit.javascript.ScriptingEngineImpl
Context 对象来自:org.mozilla.javascript.Context,这里是它的 javadoc:
此类表示执行脚本的运行时上下文。在执行脚本之前,必须创建一个 Context 实例并将其与将执行脚本的线程相关联。上下文将用于存储有关脚本执行的信息,例如调用堆栈。上下文使用 call(ContextAction) 或 enter() 方法与当前线程相关联。
支持不同形式的脚本执行。脚本可以直接从源代码进行评估,也可以先编译然后再执行。还支持交互式执行。
脚本执行的某些方面,例如类型转换和对象创建,可以通过 Context 的方法直接访问。
在后端,我试图模拟office365登录页面发出的post请求,但到目前为止......太糟糕了......
我真的需要你的帮助。我想至少解决这三个陈述中的一个:
- 使javascripting工作或:
- 正确模拟从 office365 登录页面发出的请求或:
- 完全绕过office365登录,只使用yammer一个
提前谢谢你,斯蒂芬