Java htmlunit按钮已单击,但服务器的响应与单击的按钮不同
(哇,我不知道在这里获得帮助有多难。如果有人看到这个问题可以更好地提出,我愿意接受建议) 简单地说,我使用HtmlUnit加载页面、更改字段并单击()提交按钮。但是,服务器总是以页面作为响应,如果单击了不同窗体上的不同按钮,则返回该页面 显而易见的答案是,我一定是选择了错误的表单或错误的按钮。然而,在过去的几周里,我使用了许多不同的语义来选择按钮,并进行了许多测试,以验证它确实是正确表单上的正确按钮 我已经在这个网站上用了好几个月了,我想你们每个人都在学习各种各样的东西。 但这件事已经困扰了我好几个星期了 以下是我尝试使用的精简网页:Java htmlunit按钮已单击,但服务器的响应与单击的按钮不同,java,htmlunit,Java,Htmlunit,(哇,我不知道在这里获得帮助有多难。如果有人看到这个问题可以更好地提出,我愿意接受建议) 简单地说,我使用HtmlUnit加载页面、更改字段并单击()提交按钮。但是,服务器总是以页面作为响应,如果单击了不同窗体上的不同按钮,则返回该页面 显而易见的答案是,我一定是选择了错误的表单或错误的按钮。然而,在过去的几周里,我使用了许多不同的语义来选择按钮,并进行了许多测试,以验证它确实是正确表单上的正确按钮 我已经在这个网站上用了好几个月了,我想你们每个人都在学习各种各样的东西。 但这件事已经困扰了我好
<HTML>
...
<FORM ACTION="http://www.awebsite.com/search.asp" METHOD="POST">
...
<INPUT TYPE="SUBMIT" VALUE="Go!">
...
</form>
...
<FORM METHOD="POST" ACTION="inventory.asp?a=sd&blindID=252">
...
<INPUT TYPE="Submit" VALUE="Go!">
...
</form>
...
<FORM ACTION="inventory.asp?pg=1&blindID=252&a=c&viewPrices=" METHOD="post">
...
<INPUT TYPE="Submit" VALUE="Submit Changes" onClick="this.disabled=true;this.form.submit()">
...
</form>
...
</HTML>
...
...
...
...
...
...
...
...
...
...
以及我处理它的java程序片段:
// call my own external routine for getting web pages
HtmlPage page = webFetch.fetchWithCookies("http://www.awebsite.com/inventory.asp?blindID="+blindId, validator, filename); // get page with forms on it
// modify an input field
inpPrice = page.getElementByName("newPrice"+item.lotId);
inpPrice.setValueAttribute(item.price.toString());
// submit modified page to server
List<HtmlForm> forms = page.getForms();
HtmlForm form = forms.get(2);
HtmlSubmitInput button = form.getInputByValue("Submit Changes");
HtmlPage page2 = button.click(); // get the server response page
// save the returned page locally so we can look at it
File saveFile = new File("page2.htm");
if (saveFile.exists()) {
saveFile.delete();
}
page2.save(saveFile);
//调用我自己的外部例程获取网页
HtmlPage=webFetch.fetchWithCookies(“http://www.awebsite.com/inventory.asp?blindID=“+blindId,验证程序,文件名);//获取包含表单的页面
//修改输入字段
inpPrice=page.getElementByName(“newPrice”+item.lotId);
inprice.setValueAttribute(item.price.toString());
//将修改后的页面提交到服务器
列表表单=page.getForms();
htmlformform=forms.get(2);
HtmlSubmitInput button=form.getInputByValue(“提交更改”);
HtmlPage page2=按钮。单击();//获取服务器响应页面
//将返回的页面保存在本地,以便我们可以查看它
File saveFile=新文件(“page2.htm”);
if(saveFile.exists()){
saveFile.delete();
}
第2页保存(保存文件);
我想要第三种形式,但我所做的一切都得到了第二种形式的回应。我尝试过的事情:
- 我使用setJavaScriptEnabled(false);因为当我打开它时,我会犯很多我无法理解的错误李>
- BrowserVersion.FIREFOX\u 3\u 6“browser”常量没有任何区别
- 我尝试使用.type('\n');在表单中的一个字段输入上。没有区别
- 尝试过的表单。获取(3)只是为了确保我获取了列表中的最后一个表单,以防有隐藏的表单我没有看到。这给我带来了一个IndexOutOfBoundsException错误,表明只提取了3个表单
- 在我的现代Firefox浏览器中关闭javascript,并尝试执行与我尝试使用HtmlUnit完成的步骤完全相同的步骤。服务器返回了正确的和预期的页面,就好像按下了正确的按钮一样。这似乎意味着javascript是不需要的,因此不是我麻烦的根源