是否有人知道如何使用HtmlUnit,Java提交此表单?
<form name="sendSmsForm" method="POST" action="/talkmore3/servlet/SendSmsFromSelfcare" onsubmit="return checkBeforeSubmit();">
<input type="hidden" value name="message1" id="message1"/>
<input type="hidden" value name="list" id="list"/>
<table border="0" width="560">
<tbody>
<tr>
<td>
<div id="ContactListPanel">
<iframe height="425" width="560" frameborder="0" scrolling="no" id="ContactListFrame" name="ContactListFrame" src="/talkmore3/servlet/ManageContactList">
</iframe>
</div>
</td>
</tr>
<tr align="left">
<td colspan="2" align="left">
<div class="button_green" style="width: 114px; float: left;margin-left: 130px">
<a href="javascript:sendSMS();" title="Send SMS">
<span>
Send SMS
</span>
</a>
</div>
</td>
</tr>
</tbody>
</table>
</form>
我试过这个:
HtmlForm form = page.getFormByName("sendSmsForm");
form.getInputByName("list").setValueAttribute("99999999");
form.getInputByName("message1").setValueAttribute("test");
HtmlAnchor submit = page.getFirstByXPath("//a[@href='javascript:sendSMS();']");
submit.click();
但似乎它没有得到输入的值..
答案 0 :(得分:2)
如您所见,此html包含一些js脚本,因此您需要运行它以获得所需的行为。
尝试类似:
HtmlForm form = page.getFormByName("sendSmsForm");
form.getInputByName("list").setValueAttribute("99999999");
form.getInputByName("message1").setValueAttribute("test");
page = (HtmlPage) page.executeJavaScript("checkBeforeSubmit()").getNewPage(); // from onsubmit
page = (HtmlPage) page.executeJavaScript("sendSMS()").getNewPage(); //from submit link
此代码应设置表单值,验证表单,然后使用sendSMS()方法执行某些操作。
通常您需要跟踪这些页面中的js。他们中的一些人听取输入变化,进行某种验证等。
另外,请查看checkBeforeSubmit
和sendSMS
函数,了解他们对您的网页所做的工作。