Jsoup:将子 <input> 元素附加到 <foorm> 不会影响表单数据
Posted
技术标签:
【中文标题】Jsoup:将子 <input> 元素附加到 <foorm> 不会影响表单数据【英文标题】:Jsoup: appending child <input> element to a <foorm> doesn't affect the form data 【发布时间】:2022-01-15 19:19:41 【问题描述】:以下单元测试失败:
@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.as-s-rt(1 == formData.size());
问题:
-
是错误还是我做错了什么?
有解决方法吗?
【问题讨论】:
【参考方案1】:您必须在表单中添加input
元素!
看addElement(Element element)
的文档:
添加一个表单控件元素到这个表单。
因此,在您的情况下,您必须在断言之前将以下行添加到代码中:
((FormElement) formElement).addElement(inputElement);
【讨论】:
在这种情况下,输入元素不会添加到 HTML 树中 @Vladimir 你是对的!固定。 只是想了解一下 FormElement 类需要哪些 elements 属性?为什么 formData() 方法不能只迭代 children()? 你将不得不问@JonathanHedley。 ^^以上是关于Jsoup:将子 <input> 元素附加到 <foorm> 不会影响表单数据的主要内容,如果未能解决你的问题,请参考以下文章
请问用Jsoup如何解析一个已知name的元素的value值?