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