标签: htmlunit

Java对象"无法解除引用"

我正在使用一个库 - HtmlUnit - 我刚刚从2.4版更新到2.5版.当我编译我的代码2.5时,我得到一个奇怪的对象"无法解除引用"错误消息,我不熟悉.此外,我不明白为什么当我用两行代码编写代码时它会起作用,但是当我把代码作为单行代码时它会失败.

这是代码:

//this compiles fine
HtmlInput usernameInput = form.getInputByName("username");
usernameInput.setValueAttribute(userName);

//this fails to compile
form.getInputByName("password").setValueAttribute(passWord);
Run Code Online (Sandbox Code Playgroud)

这是我使用ANT和Java 1.6编译时得到的错误消息:

[javac] E:\workspaces\europa\PortalTestSuite\src\com\carefirst\portal\test\controller\EAITest.java:32: com.gargoylesoftware.htmlunit.html.HtmlInput cannot be dereferenced
[javac]         form.getInputByName("password").setValueAttribute(passWord);
[javac]                                    ^
Run Code Online (Sandbox Code Playgroud)

com.gargoylesoftware.htmlunit.html.HtmlInput无法解除引用?我已经看到了Autoboxing的derefernce问题,但没有看到对象.在这种情况下它意味着什么?为什么代码以一种方式而不是另一种方式工作?

java htmlunit

2
推荐指数
1
解决办法
3520
查看次数

“InstallTrigger”未定义

在我的 html 页面中,我有这样的代码,只有当浏览器是 Firefox 时,我才安装了扩展:

if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent))
{
  //relevant code
  InstallTrigger.install(InstallXPI);
}
Run Code Online (Sandbox Code Playgroud)

它在每个浏览器中都能正常工作。但是当通过 htmlunit 框架使用同一页面并在 webclient 中使用 browserversion.FIREFOX_3_6 参数时。它在那里显示错误:

com.gargoylesoftware.htmlunit.ScriptException: Wrapped 
com.gargoylesoftware.htmlunit.ScriptException: Wrapped 
com.gargoylesoftware.htmlunit.ScriptException: ReferenceError: "InstallTrigger" is not defined.
Run Code Online (Sandbox Code Playgroud)

对此有什么想法吗?

javascript firefox htmlunit

2
推荐指数
1
解决办法
3529
查看次数

使用htmlunit访问html表

我想访问html文件中包含的表.这是我的代码:

  import java.io.*; 
  import com.gargoylesoftware.htmlunit.html.HtmlPage;
  import com.gargoylesoftware.htmlunit.html.HtmlTable;
  import com.gargoylesoftware.htmlunit.html.*;
  import com.gargoylesoftware.htmlunit.WebClient;


  public class test {

  public static void main(String[] args) throws Exception {

    WebClient client = new WebClient();
    HtmlPage currentPage = client.getPage("http://www.mysite.com");
    client.waitForBackgroundJavaScript(10000);



final HtmlDivision div = (HtmlDivision) currentPage.getByXPath("//div[@id='table-matches-time']");

   String textSource = div.toString();
    //String textSource = currentPage.asXml();

FileWriter fstream = new FileWriter("index.txt");
BufferedWriter out = new BufferedWriter(fstream);
out.write(textSource);

out.close();

    client.closeAllWindows();

  }

 }
Run Code Online (Sandbox Code Playgroud)

表格采用以下形式:

   <div id="table-matches-time" class="">
                    <table class=" table-main">
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

 Exception in thread "main" java.lang.ClassCastException: java.util.ArrayList cannot be cast to …
Run Code Online (Sandbox Code Playgroud)

java htmlunit

2
推荐指数
1
解决办法
7601
查看次数

使用HtmlUnit时出错

当我执行这个简单的代码将网站的内容作为文本时,它会显示我无法理解的错误.

import java.io.IOException;
import java.net.MalformedURLException;

import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.ScriptException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

public class sd {
    public static void main(String[] args) {
        sd vip=new sd();
        try {
            vip.homePage();
        } catch (Exception e) {
            e.printStackTrace();
        }

        System.out.print("sssss");
    }

    public void homePage() throws Exception, ScriptException {
        final WebClient webClient = new WebClient();
        final HtmlPage page =       
    (HtmlPage)webClient.getPage("http://timesofindia.indiatimes.com/");
        String pageAsText = page.asText();
        String pageAsXML = page.asXml();

        // System.out.println(pageAsXML);
        System.out.println("////////////////////output//////////////////////////"); 
        System.out.println(pageAsText);
        // System.out.println(pageAsXML);
        System.out.println("////////////////////output ends//////////////////////////"); 
    }

}
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

   ======= EXCEPTION START ========
Exception …

javascript java htmlunit web-scraping web

2
推荐指数
2
解决办法
8985
查看次数

HtmlUnit ScriptException错误

我正在使用HtmlUnitDriver,这是我的代码.

   HtmlUnitDriver driver = new HtmlUnitDriver(true);
   driver.get("some url here");
Run Code Online (Sandbox Code Playgroud)

我得到以下例外:

Caused by: com.gargoylesoftware.htmlunit.ScriptException: Wrapped com.gargoylesoftware.htmlunit.ScriptException: SyntaxError: missing ; before statement (http://sales.liveperson.net/hcp/html/mTag.js?site=7824460#1(eval)#1)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:595)
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:537)
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:538)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:545)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:520)
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:896)
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventListeners(EventListenersContainer.java:162)
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:221)
    at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:735)
    at com.gargoylesoftware.htmlunit.html.HtmlElement$2.run(HtmlElement.java:866)
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:537)
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:538)
    at com.gargoylesoftware.htmlunit.html.HtmlElement.fireEvent(HtmlElement.java:871)
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeEventHandlersIfNeeded(HtmlPage.java:1162)
    at com.gargoylesoftware.htmlunit.html.HtmlPage.initialize(HtmlPage.java:202)
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:440)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:311)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:373)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:346)
    ... 8 more
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题.

java htmlunit htmlunit-driver

2
推荐指数
2
解决办法
6893
查看次数

HtmlUnit禁止外部请求

我使用HtmlUnit对我的网站进行自动化测试.我的网站使用gmaps api - 并且需要花费大量时间来发送外部站点的请求(我有几百个测试和几千个页面加载).

我需要一些方法来告诉HtmlUnit只加载本地页面(存储在IIS express中),然后加载外部资源以便我的测试运行得更快.

htmlunit

2
推荐指数
1
解决办法
557
查看次数

如何在HTML单元中获取Ajax响应(它呈现网页的HTML)

我有一个Web应用程序,当我向服务器发出AJAX请求以进行CRUD操作时返回JSON.这是因为我使用jQuery来处理数据而不刷新页面(MVC),所以如果我在系统中创建一个新条目,服务器将返回一个响应,该响应具有JSON格式的创建条目.jQuery管理收到的数据并在列表中呈现条目(使用先前创建的条目).

现在我用HTML单元测试它,但是如果我尝试的话

WebResponse response = page.getWebResponse()
Run Code Online (Sandbox Code Playgroud)

我得到200状态并且消息"OK".但我期待着我创建的条目的JSON数据.

如果我试试

page.asText()
Run Code Online (Sandbox Code Playgroud)

我得到当前页面的HTML(条目已经在列表中,但不是我想要的数据).

这是一个类似的问题,没有回应:Json ajax调用返回响应200 ok

PD:jQuery表单有两个字段,一个是名称的文本输入,另一个是汽车设置的选择.我将要选择的设置列表传递给此函数.使用时间戳和静态int种子自动生成名称.这是我正在使用的代码:

public void create(List<Settings> settings) throws FailingHttpStatusCodeException, MalformedURLException, IOException
{
    page = webClient.getPage("localhost:8080/cars/list");

    int elementsCount = getEntitiesCount();
    creationSeed = elementsCount+1;

    HtmlAnchor anchor = (HtmlAnchor) page.getFirstByXPath("//a[@class='action-createCar']");
    page = (HtmlPage) anchor.click();

    HtmlForm form = page.getFirstByXPath("//form[@class='CarsForm']");
    form = page.getForms().get(0);
    HtmlTextInput nameField = form.getInputByName("CarsForm-name");
    nameField.setText("Test " + creationSeed + " - " + new Date().getTime());

    HtmlSelect columnSelectList = (HtmlSelect) form.getSelectByName("CarsForm-settings");
    if (settings != null && settings.size() > 0)
        for (Settings …
Run Code Online (Sandbox Code Playgroud)

testing ajax jquery json htmlunit

2
推荐指数
1
解决办法
4216
查看次数

Java HtmlUnit 点击锚点

我正在尝试使用 htmlunit 制作 java 应用程序以从http://www.jobolizer.com站点获取信息。所以问题是我必须用我的网址填充文本框并单击锚点以提交表单。第一部分效果很好(查找表单并用我的数据填充表单文本框),但我无法使用 getByXPath() 方法找到锚点,锚点没有名称或值。 在此处输入图片说明

这是我的代码:

public class JobolizerCrawler {
    private final String jobolizerUrl = "http://www.jobolizer.com";
    WebClient webClient = new WebClient(BrowserVersion.FIREFOX_24);

    public JobolizerCrawler () {
        webClient.getOptions().setJavaScriptEnabled(true);
        webClient.getOptions().setCssEnabled(false);
    }
    public void fillTextBoxWithUrl(String vacancyURL) throws IOException {

        final HtmlPage page = webClient.getPage(jobolizerUrl);
        System.out.println(page.asText());
        final HtmlForm form = page.getFirstByXPath("//form[@action='/phpProxy/getJOBolizerResponse_en.php']");
        final HtmlTextInput input = form.getInputByName("url");
        input.setText(vacancyURL);

        HtmlButton button = (HtmlButton) page.getByXPath("/form[@action='/phpProxy/getJOBolizerResponse_en.php']/a[@id=lightboxlink]").get(0);
        HtmlPage page2 = button.click();


        String page2Text = page2.asText();
        System.out.println(page2Text);
    }
}
Run Code Online (Sandbox Code Playgroud)

html javascript java htmlunit

2
推荐指数
1
解决办法
4204
查看次数

使用HtmlUnit Java从&lt;a href&gt;打开链接

我有一个包含此部分的html文件:

<td> <a href="/romarin/detail.do?ID=0"> NAME </a> </td>
Run Code Online (Sandbox Code Playgroud)

如何href使用HtmlUnit 打开此链接?

我的代码:

 final WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_11);
 final HtmlPage page1 = webClient.getPage("file:\\" + newrfile);
 final HtmlSubmitInput button = form.getInputByName("submit");
 final HtmlPage page2 = button.click();
 System.out.println(page2.asText());
 final HtmlForm form2 = page2.getFormByName("SearchForm");
Run Code Online (Sandbox Code Playgroud)

html java htmlunit

2
推荐指数
1
解决办法
6029
查看次数

HtmlUnit:如何搜索文本

在 java 项目中,我必须使用 HtmlUnit 来检索网页的内容。

如何搜索具有内容的元素123。它是 html 文档的一部分。引用元素没有 id、class 或 name:

....
  <tr>
    <td>123</td>
    <td>456</td>
  </tr>
....
Run Code Online (Sandbox Code Playgroud)

不可能将整个文档转换为文本然后进行搜索。

java htmlunit

2
推荐指数
1
解决办法
1463
查看次数

标签 统计

htmlunit ×10

java ×7

javascript ×3

html ×2

ajax ×1

firefox ×1

htmlunit-driver ×1

jquery ×1

json ×1

testing ×1

web ×1

web-scraping ×1