HTMLUNIT getformbyname,网站中未指定表单名称

时间:2012-03-06 18:35:18

标签: java xpath htmlunit

我正在尝试使用HTMLUNIT来浏览网站上的按钮我遵循本教程http://htmlunit.sourceforge.net/gettingStarted.html,但它需要一个表单名称。我正在尝试做的网站有这个页面来源。

<form method="post" action="doDelete">
     Are you sure you want to delete 'Apple?'?
 <input name="Submit" value="Yes" class="submit-button" type="submit" />
 </form>

我正在尝试单击网页上的“是”按钮验证框。(删除按钮)如您所见,没有提供表单名称。这是我的代码。

 final WebClient webClient = new WebClient();
        final HtmlPage page1 = webClient.getPage("http://ma.some-site.com:8080/user/mike/delete");



        List<HtmlForm> formlist = (List<HtmlForm>) page1.getForms();
       System.out.println(formlist.toString());

        final HtmlForm form = page1.getFormByName("myform"); <---Problem here
       final HtmlSubmitInput button = form.getInputByName("Submit");
       button.click();
        webClient.closeAllWindows();

我尝试了这个但是不起作用

  final HtmlForm form =   page1.getFormByName(formlist.get(1).getLocalName());

我相信你可以使用xpath来查找表单名称?

1 个答案:

答案 0 :(得分:14)

是的,您可以通过XPath以这种方式获取此元素:

final HtmlForm form = page1.getFirstByXPath("//form[@action='doDelete']");

当然,如果您有更多具有该操作的元素,则应正确设置XPath以选择您希望获得的元素。方法getFirstByXPath将仅返回所有匹配结果中的一个。如果您想获得许多结果然后进行进一步处理,那么您应该使用方法getByXPath

让我知道它是如何运作的。