【问题标题】:How to call a javascript in HttpClient or Html Unit如何在 HttpClient 或 Html 单元中调用 javascript
【发布时间】: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 中实现这一点?

标签: java javascript ajax httpclient htmlunit


【解决方案1】:

你的意思是网络浏览器?

firefox 的 firebug 和 IE 的 F12

这些工具将帮助您调试 javascript,您应该在 javascript 代码中切换断点,并逐步运行以查看您的 reqID 的值

【讨论】:

  • 我猜当他说HTTPClientHTML 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/

【讨论】:

    猜你喜欢
    • 2017-03-06
    • 2018-05-08
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 2016-05-17
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多