Jsoup:将子元素附加到<foorm><input>元素不会影响表单数据

Jsoup: appending child <input> element to a <foorm> doesn't affect the form data

提问人:Vladimir 提问时间:12/11/2021 最后编辑:Janez KuharVladimir 更新时间:12/14/2021 访问量:216

问:

以下单元测试失败:

@Test
public void test() throws Exception {
    String html = "<html><form id=\"myform\"></form></html>";
    Document document = Jsoup.parse(html);
    Element inputElement = document.createElement("input");
    inputElement.attr("name", "any_name");
    inputElement.attr("value", "any_value");
    Element formElement = document.getElementById("myform");
    formElement = formElement.appendChild(inputElement);
    List<Connection.KeyVal> formData =  ((FormElement)formElement).formData();
    Assert.assrt(1 == formData.size());
}

问题:

  1. 是错误还是我做错了什么?
  2. 有解决方法吗?
java jsoup html 解析

评论


答:

0赞 Janez Kuhar 12/12/2021 #1

您必须将元素添加到表单中!input

查看 addElement(Element element) 的文档:

此窗体添加窗体控件元素。

因此,在您的情况下,您必须在断言之前将以下行添加到代码中:

((FormElement) formElement).addElement(inputElement);

评论

0赞 Vladimir 12/14/2021
在这种情况下,输入元素不会添加到 HTML 树中
0赞 Janez Kuhar 12/14/2021
@Vladimir 你是对的!固定。
0赞 Vladimir 12/14/2021
只是想了解 FormElement 类需要什么元素属性?为什么 formData() 方法不能只迭代 children()?
0赞 Janez Kuhar 12/14/2021
你得问@JonathanHedley。^^