单击htmlunit按钮,但服务器响应,就像点击了不同的按钮一样

时间:2012-07-13 17:46:58

标签: java htmlunit

(哇,我没有意识到在这里获得帮助有多难。如果有人知道如何更好地提出这个问题,我愿意接受建议)

简要说明,我使用HtmlUnit加载页面,更改字段和.click()“提交”按钮。但是,如果单击其他表单上的其他按钮,则服务器始终会响应返回的页面。

显而易见的答案是我必须选择错误的表格或错误的按钮。然而,在几周内我使用了许多不同的语义来选择按钮,并且许多测试来验证它确实是正确形式上的正确按钮。

我已经使用这个网站几个月来学习各种各样的事情,想想你们每个人。 但是这个让我难以忍受了好几个星期。

以下是我正在尝试使用的精简网页:

<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);

我想要第三种形式,但我做的每件事都会得到第二种形式的回应。我尝试过的事情:

  • 我使用setJavaScriptEnabled(false);因为当我打开它时,我得到了大量的错误,我无法理解。
  • BrowserVersion.FIREFOX_3_6“浏览器”常量没有任何区别。
  • 我尝试使用.type('\ n');在表格中的一个字段输入上。没有区别。
  • 尝试form.get(3)只是为了确保我收到列表中的最后一个表单,以防有隐藏的表单我没看到。这恰当地给我一个IndexOutOfBoundsException错误,表明只有3个表格被选中。
  • 在我的现代Firefox浏览器中关闭了javascript并尝试执行我正在尝试使用HtmlUnit执行的完全相同的步骤。服务器返回正确和预期的页面,就像按下正确的按钮一样。这似乎意味着不需要javascript,因此不是我麻烦的根源?

0 个答案:

没有答案