如何在 HttpClient 或 Html 单元中调用 javascript
Posted
技术标签:
【中文标题】如何在 HttpClient 或 Html 单元中调用 javascript【英文标题】:How to call a javascript in HttpClient or Html Unit 【发布时间】:2012-04-14 17:43:52 【问题描述】:我正在使用 http 客户端 POST 方法在网站中执行特定操作,
为此,它使用产生 requestID 的 ajax 连接的 javascript
即var reqID = Math.floor(Math.random()*1000001);
发布。
我想访问该 reqID 以执行操作。
谁能帮助我了解如何访问 HttpClient 中的 java 脚本?
或者我们可以使用 htmlUnit 访问 javascript 的特定 reqID 变量吗?
我的 JS 包括:
ajaxConnection.prototype.execute = function()
var reqID = Math.floor(Math.random()*1000001);
var params = "reqID=" + reqID ;
for (var key in this.connection_parameters)
params += "&" + key + "=" + this.connection_parameters[key];
我正在调用 POST 以执行操作,即
String Src = PageSource_Post("http://www.example.com/ajax/ratingClient.php", new String[][]"reqID","","id", "329602","cmd", "rate","rating", "2",, null);
到目前为止,我将 reqID 保留为空白,其他参数是从 pagesource 获取的! 我也在尝试使用 HtmlUnit 也喜欢
webClient.setJavaScriptEnabled(true);
HtmlPage firstPage = webClient.getPage("http://www.example.com/");
HTMLScriptElement script = new HTMLScriptElement();
我必须从这里访问特定的reqID
变量吗?
【问题讨论】:
发布您的代码,以便社区可以更好地帮助您 @LuiggiMendoza 我的 js 包括ajaxConnection.prototype.execute = function() var reqID = Math.floor(Math.random()*1000001); var params = "reqID=" + reqID ; for( var key in this.connection_parameters ) params += "&" + key + "=" + this.connection_parameters[key];
并且我正在调用 POST 以执行操作,即 String Src = PageSource_Post("http://www.example.com/ajax/ratingClient.php", new String[][]"reqID","","id", "329602","cmd", "rate","rating", "2",, null);
到目前为止,我已将 reqID 保持为空白,其他参数是从 pagesource 获取的!!跨度>
@LuiggiMendoza 我正在尝试使用 HtmlUnit 也喜欢 webClient.setJavaScriptEnabled(true); HtmlPage firstPage = webClient.getPage("http://www.example.com/"); HTMLScriptElement script = new HTMLScriptElement();
从这里我必须访问特定的 var reqID = Math.floor(Math.random()*1000001);
或总 js 以获得确切的值
@Aspirant:您应该编辑您的帖子以包含您的代码(不要将代码添加为评论)。它更具可读性,这就是编辑的目的。 :)
这是一个 php 问题,而不是 Java 问题 (example.com/ajax/ratingClient.php),或者您需要帮助以在 Java 中实现这一点?
【参考方案1】:
你的意思是网络浏览器?
firefox 的 firebug 和 IE 的 F12
这些工具将帮助您调试 javascript,您应该在 javascript 代码中切换断点,并逐步运行以查看您的 reqID 的值
【讨论】:
我猜当他说HTTPClient 或HTML Unit 时,他的意思是“HTTPClient 或HTML 单元”而不是“网络浏览器”。 @yahz 兄弟我正在使用 HttpClient,所以我使用 firebug 完成了调试过程,发现 reqID 是从我的页面源中的 ajaxconnection.js 触发的!现在因为我需要在 javascript 中发布 reqID,所以我需要有关如何使用 HttpClient 或 Html UNIT 从 javascript 访问该 reqID 变量的指导.....【参考方案2】:看起来您想从 Java 中执行 javascript。就我个人而言,我发现 HTMLUnit 和 HTTPUnit 的 javascript 支持有点欠缺。我们也遇到过类似的问题,并且使用 Selenium 取得了巨大的成功。您可以使用 Selenium IDE 创建一个快速测试用例,它是一个 firefox 插件(http://docs.seleniumhq.org/projects/ide/)。它允许您在 Firefox 中记录您的步骤,并将测试用例导出到 JUnit 测试。这是一个很好的步骤链接。 http://university.utest.com/selenium-basics-part-3-record-test-case-and-export-in-junit-format/
【讨论】:
以上是关于如何在 HttpClient 或 Html 单元中调用 javascript的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core中如何针对一个使用HttpClient对象的类编写单元测试
如何在 C# 中使用 HttpClient 发送文件和表单数据