【问题标题】:How can I get the result from the JavaScript html page using HtmlUnit?如何使用 HtmlUnit 从 JavaScript html 页面获取结果?
【发布时间】:2013-11-18 08:58:21
【问题描述】:

我现在正在使用 JavaScript html 来做一些测试。而我想使用HtmlUnit来访问页面获取JavaScript网页上的运行结果。 而这个页面就在这里(页面源码,可以鼠标右键查看源码):

http://itec.hust.edu.cn/~zhangcw/javascript.html

我想要的是得到关于延迟值“delay:xxx ms”的运行结果 该页面上的 JavaScript。但是,当我使用 HtmlUnit 捕获 html 时,它总是捕获该页面的原始源并且不包含运行结果。我的代码是这样的:

WebClient webClient = new WebClient();
HtmlPage page = webClient.getPage("http://itec.hust.edu.cn/~zhangcw/javascript.html");
String source = page.asXml();
System.out.println(Source);

source 只包含 JavaScript 源代码和 html 内容,不包含 JavaScript 在页面上的执行结果。我应该使用 HtmlUnit 做什么?

我的问题是如何使用 HtmlUnit 来获取页面上的 JavaScript 运行结果?

感谢您阅读本文,对我的英语水平很苛刻。

【问题讨论】:

    标签: javascript automation htmlunit web-testing


    【解决方案1】:

    HtmlUnit 有一个对语法错误非常敏感的 JavaScript 引擎。因此,在普通浏览器(Chrome、IE、FF 等)中运行的事实并不意味着它可以在 HtmlUnit 上运行。

    我快速查看了代码,发现太多语法错误。我什至通过w3c validator 运行它,发现了 10 个错误。这里只是一个例子:

    <button type="button style="
    

    你显然错过了那里的报价。

    还有一些验证器可能无法检测到的错误,例如:

    <text id= _delay>
    

    你缺少引号,你有一个额外的空间。

    最后,代码不起作用的最可能原因是您将其定义为HTML 4.01 Transitional,并将HTML5 属性onerror 添加到图像中。此外,您已向该属性添加了一段 JavaScript,而它恰好是未执行的 JavaScript。

    修复错误可能会有所帮助。但是,这并不一定意味着它会在那之后起作用。

    【讨论】:

    • 谢谢,我会检查错误。我很困惑我是否以正确的方式调用 htmlunit 来在 html 上执行 JavaScript,就像我附加的代码一样。
    • 按原样没关系(前提是Source全部小写):)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多