如何从多个具有相同名称的提交按钮(HtmlUnit,Java)中进行选择

时间:2019-08-07 05:32:55

标签: java htmlunit

我正在使用HTMLUnit,但是有问题。网页上有多个按钮,名称相同,类别相同,唯一的区别就是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">

2 个答案:

答案 0 :(得分:0)

另外,您可以在DOM上进行类似CSS的选择。

从HtmlUnit的“入门”页面:

@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");
    }
}

因此,您应该可以选择:

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

或者,如果您觉得比较安全,请选择div中的按钮:

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

答案 1 :(得分:0)

我们只需创建简单的javascript函数add(),update()即可通过单击按钮来调用,而不是通过DOM来跟踪

相关问题