Java HTMLUnit认为提交按钮是一种文本输入

Java HTMLUnit认为提交按钮是一种文本输入,java,htmlunit,Java,Htmlunit,我正在尝试用HTML处理Java中的表单。在尝试查找并单击submit按钮之前,它工作正常 这是表单的外观 <form method="get" action="result.php"> <p>Text: <input type="text" name="text"/></p> <p>Agree: <input type="checkbox" name="doYouAgree" value="agree" />

我正在尝试用HTML处理Java中的表单。在尝试查找并单击submit按钮之前,它工作正常

这是表单的外观

<form method="get" action="result.php">
    <p>Text: <input type="text" name="text"/></p>
    <p>Agree: <input type="checkbox" name="doYouAgree" value="agree" /></p>
    <p><input type="submit" name="Submit" value="Submit"/></p>
</form>
我也尝试过用每种类型的输入处理表单,不管它是哪种类型,它总是返回HtmlTextInput


有没有人见过这个问题,或者知道如何纠正它?我担心这就是HtmlUnit不提交任何表单的原因。

您可以提交带有基本对象的表单,如DomeElement

DomElement button = page.getFirstByXPath("//input[@name='Submit']");
HtmlPage new_page = button.click(); // or you can use the old page

应该可以工作。

你试过使用
按钮
标记吗?是的,它仍然以HtmlTextInput的形式返回。你能不能不将它强制转换为
HtmlSubmitInput
?不,它会导致ClassCastException:-(我不知道HtmlUnit API(我通常通过Geb使用它),但我怀疑
getInputByName
不是调用技术上不是输入的东西的正确方法。我们从旧系统重用的一些代码没有正确移植,这就是导致问题的原因。不过,感谢您的回答,这不是我在搜索解决方案时看到的,所以我选择这就是答案。
DomElement button = page.getFirstByXPath("//input[@name='Submit']");
HtmlPage new_page = button.click(); // or you can use the old page