HtmlUnit,如何在不点击提交按钮的情况下发布表单?

2022-09-03 03:30:15

我知道在HtmlUnit中,我可以在表单上提交,它将被发布。但是,如果我禁用了javascript并想使用一些内置函数发布表单怎么办?fireEvent

我已经检查了javadoc,但没有找到任何方法来做到这一点。奇怪的是,HtmlForm中没有这样的功能...


我在htmlunit页面上阅读了javadoc和教程,我知道我可以使用并单击它。BuT 有时有些表单没有提交类型按钮,甚至有这样的按钮但没有 name 属性。getInputByName()

在这种情况下,我正在寻求帮助,这就是为什么我正在使用,但它并不总是有效。fireEvent


答案 1

您可以使用“临时”提交按钮:

WebClient client = new WebClient();
HtmlPage page = client.getPage("http://stackoverflow.com");

// create a submit button - it doesn't work with 'input'
HtmlElement button = page.createElement("button");
button.setAttribute("type", "submit");

// append the button to the form
HtmlElement form = ...;
form.appendChild(button);

// submit the form
page = button.click();

答案 2
WebRequest requestSettings = new WebRequest(new URL("http://localhost:8080/TestBox"), HttpMethod.POST);

// Then we set the request parameters
requestSettings.setRequestParameters(Collections.singletonList(new NameValuePair(InopticsNfcBoxPage.MESSAGE, Utils.marshalXml(inoptics, "UTF-8"))));

// Finally, we can get the page
HtmlPage page = webClient.getPage(requestSettings);

推荐