使用 HtmlUnit 如何单击(形成)不是按钮的按钮
Using HtmlUnit how to click (form) a button that isnt a button
我经常遇到按钮,尤其是在登录表单上,它们似乎是一系列嵌套的 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();
我经常遇到按钮,尤其是在登录表单上,它们似乎是一系列嵌套的 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();