使用 Java 和 Jaunt API 填写具有复杂名称(输入标签中的点符号)的 HTML 表格

Filling out a HTML-form with complex name (dot-notation in input-tag) with Java and Jaunt API

- 大家好,

我正在构建一个 Java-工具,尝试使用 Java 和 [=17= 自动填写 HTML-页面中的某些表单 input 元素].

HTML-代码如下:

<fieldset class = "fieldsetlong">
<legend>searchprofile</legend>
<label for="reference">reference:</label>
<input maxlength="50" name="reference" id="reference" type="text" />
</fieldset>

<fieldset class = "fieldsetlong">
<legend>searchcriteria</legend>
<label for="surname">surname:</label>
<input name="searchprofile.surname" id="surname" type="text" />
</fieldset>

Java-用于填写 "normal" 输入字段的代码 reference(有效)如下所示:

form.set("reference", "123Test");

很遗憾,我无法填写名称中使用点符号 searchprofile.surname 的字段

这是我尝试过的示例(没有成功):

form.set("surname", "TestPerson");
form.set("searchprofile.surname", "TestPerson");
form.set("name=\"searchprofile.surname\"", pers.getSurname());
form.set("id=\"surname\"", pers.getSurname());

对于这些命令中的每一个,我都得到一个 NotFoundException 并且不知道我是否可以用 Jaunt 做到这一点。

如能提供这方面的帮助,我们将不胜感激。

提前致谢

编辑 - 有没有办法使用 JSoup 到达点标记的输入字段 searchprofile.surname

HTML 允许 name-属性中的点,但是 Jaunt 是否接受这个 abc.name?

不确定 Jaunt,以前从未使用过。然而 Jsoup 似乎是一个相当不错的库,可以在这里使用。我自己已经使用 Jsoup 相当长的时间了,它在 抓取网页 填写输入表单并提交 方面非常成功],当然还有HTML解析!

我已经发布了一步一步的指南来填写表单输入字段并在以下答案中提交给服务器:

基本上它的工作原理与您的代码非常相似,一个非常简短的示例是:

Connection.Response response = Jsoup.connect(url)
                                    .data("Name", "Value")
                                    .method(Method.POST).execute();

今天,Jaunt 解决方案

form.set("searchprofile.surname", "TestPerson");

工作起来很有魅力。

我不知道之前的问题是什么,但我很高兴它起作用了。

HTML 允许使用点和减号等,我将其误解为某种嵌套形式或层次结构,但点符号只是 [= 中的有效 name 属性12=].