【问题标题】:HTMLUNIT getformbyname with no form name specified in the website网站中未指定表单名称的 HTMLUNIT getformbyname
【发布时间】:2012-03-06 18:35:18
【问题描述】:

我正在尝试使用 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 来查找表单名称?

【问题讨论】:

    标签: java xpath htmlunit


    【解决方案1】:

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

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

    当然,如果您有更多元素使用该操作,您应该正确设置 XPath 以选择您希望获得的元素。 getFirstByXPath 方法将只返回所有匹配结果之一。如果你想得到很多结果,然后做进一步的处理,那么你应该去方法getByXPath

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

    【讨论】:

    • 如果在表单 action = /dialog/oauth/read 中添加操作,我将如何添加
    猜你喜欢
    • 2011-02-01
    • 2017-05-14
    • 2017-07-13
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    相关资源
    最近更新 更多