Java HTML 表单客户端

标签 java html forms

我正在寻找一个纯Java html 客户端库。我需要检索 html 表单、填写字段并以编程方式提交它们。

图书馆应该连接到一个充当浏览器的网站,处理cookie,解析文档的表单并自行解决表单提交的麻烦。

以前我使用过Apache HttpClient,但是不够简单,因为我负责解析文档并处理cookie。

最佳答案

您可能正在寻找HtmlUnit -- “Java 程序的无 GUI 浏览器”

下面是打开 google.com、使用表单搜索 “htmlunit” 并打印结果数的示例代码。

import com.gargoylesoftware.htmlunit.*;
import com.gargoylesoftware.htmlunit.html.*;

public class HtmlUnitFormExample {
    public static void main(String[] args) throws Exception {
        WebClient webClient = new WebClient();
        HtmlPage page = webClient.getPage("http://www.google.com");

        HtmlInput searchBox = page.getElementByName("q");
        searchBox.setValueAttribute("htmlunit");

        HtmlSubmitInput googleSearchSubmitButton = 
                          page.getElementByName("btnG"); // sometimes it's "btnK"
        page=googleSearchSubmitButton.click();

        HtmlDivision resultStatsDiv =
                                page.getFirstByXPath("//div[@id='resultStats']");

        System.out.println(resultStatsDiv.asText()); // About 301,000 results
        webClient.closeAllWindows();
    }
}

关于Java HTML 表单客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16379630/

相关文章:

java - RxJava retryWhen(指数退避)不起作用

java - 我可以在实例化匿名类时实现接口(interface)吗?

c# - 在文本框 C# 窗体中显示 Json 时出错

javascript - 使用多个表单javascript时发生冲突

java - 如何使用 JTree Listener 动态更改带有 CardLayout 的 JPanel?

java - WireMockServer 与 MockServerClient 的区别

javascript - 是否可以通过悬停而不是单击来激活 DIV?

javascript - 如何将table2放在table1下面?

javascript - 使用 jquery 获取的 url 参数扩展 Accordion 菜单并将 attr 添加到所需的类

php - 使用数据库将数据形成表