我正在使用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">
答案 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来跟踪