我如何从多个具有相同名称的提交按钮 select (HtmlUnit, Java)

How can I select from multiple Submit button with same name (HtmlUnit, Java)

我正在使用 HTMLUnit,但遇到了问题。该网页有多个按钮,它们具有相同的名称,相同 class,唯一的区别是 onClick。

如何点击我的按钮? (当我运行我的代码时,什么也没有发生)

我需要这个按钮:

<button name="singlebutton" class="btn btn-success" onClick="add();">Add</button> 

但同样的源码中还有:

<button name="singlebutton" class="btn btn-success" onClick="update();">Update</button>

<button name="singlebutton" class="btn btn-success" onClick="update2();">Update</button>

我尝试像往常一样提交,但没有任何反应: (我也试过作为 HtmlSubmitInput,但我有一个转换错误)

HtmlButton submitBtn = (HtmlButton) currentPage.getElementByName("singlebutton");
currentPage = (HtmlPage) submitBtn.click();

我怎样才能找到我需要的按钮?它不在

之间

提前致谢

p.s.: 如果按钮嵌套在 DIV:

中很重要
<div class="tab-pane active fade in" id="add">

实际上,您可以在 DOM.

上创建类似 css 的 select

来自 HtmlUnit 的 "Getting started" 页面:

@Test
public void cssSelector() throws Exception {
    try (final WebClient webClient = new WebClient()) {
        final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net");

        //get list of all divs
        final DomNodeList<DomNode> divs = page.querySelectorAll("div");
        for (DomNode div : divs) {
            ....
        }

        //get div which has the id 'breadcrumbs'
        final DomNode div = page.querySelector("div#breadcrumbs");
    }
}

所以你应该可以 select:

final DomNode element = page.querySelector("button.btn-success"
    + "[name='singlebutton'][onClick='add();']");

或者更确切地说,如果您觉得 select点击 div 内的按钮更安全:

final DomNode element = page.querySelector("div#add button.btn-success[name='singlebutton']");

我们可以创建简单的 javascript 函数 add()、update(),它们将通过单击按钮调用,而不是通过 DOM

来调用