使用HtmlUnit如何单击(形成)不是按钮的按钮

使用HtmlUnit如何单击(形成)不是按钮的按钮,htmlunit,Htmlunit,我经常遇到按钮,尤其是登录表单上的按钮,它们似乎是一系列嵌套的div,最后一个元素是span 它们很少是表单的一部分,我假设由Jvascript控制 是否可以单击这些按钮,以实现按钮操作的效果,例如登录到站点并返回新页面 我尝试在页面加载后等待javascript加载,因此: HtmlPage page = webClient.getPage(someUrl); webClient.waitForBackgroundJavaScript(6000); 然后单击div和span,什么也没发生 我

我经常遇到按钮,尤其是登录表单上的按钮,它们似乎是一系列嵌套的div,最后一个元素是span

它们很少是表单的一部分,我假设由Jvascript控制

是否可以单击这些按钮,以实现按钮操作的效果,例如登录到站点并返回新页面

我尝试在页面加载后等待javascript加载,因此:

HtmlPage page = webClient.getPage(someUrl);
webClient.waitForBackgroundJavaScript(6000);
然后单击div和span,什么也没发生


我正在使用HtmlUnit 2.36,我知道存在一些Javascript评估问题。

通常您可以执行类似的操作

webClient.getOptions().setThrowExceptionOnScriptError(false);


HtmlPage page = webClient.getPage(someUrl);
webClient.waitForBackgroundJavaScript(6000);

// locate your clickable element
....

buttonLike.click();
// wait until the js has done the job
webClient.waitForBackgroundJavaScript(20000);

// now get the current page content based on the current window; using
// HtmlPage myPage = (HtmlPage) buttonLike.click();
// does not work in all cases because the page content might be 
// async replaced by javascript
HtmlPage myPage = (HtmlPage) webClient.getCurrentWindow().getEnclosedPage();

奇怪的是,getPage返回得相当快,所以我没有考虑延长Javascript等待时间。我一定要试一试。感谢您对我所有HtmlUnit问题的回答。请稍候。。不是每次您想等待时都必须调用的选项。考虑到通常在单击后会调用waitForBavkgroundJavaScript,也许最好在边单击的同时使用一个新方法,例如ClickThenWaitForBackgroundJavaScriptTimeoutInMilli,这只是一个想法