使用jxBrowser我想使用像
这样的代码来模拟对html元素的点击final DOMDocument dom = browser.getDocument();
Browser.invokeAndWaitFinishLoadingMainFrame(browser, new Callback<Browser>()
{
@Override
public void invoke(Browser browser) {
DOMElement elementToClick = dom.findElement(By.xpath("some xPath expression"));
if (elementToClick != null) {
elementToClick.click();
}
}
});
如果click()动作导致页面下载但是如果点击只是执行一些javascript(没有网络动作),这可以正常工作,我得到了一个超时异常。 所以我的问题是如何在执行“纯粹”javascript或网络访问时等待点击操作完成。
感谢您的帮助。
此致 克里斯托夫
答案 0 :(得分:0)
DOMElement click()方法是异步的,JxBrowser不会等到此方法导致的网页上的任何操作完成。
我建议你可以使用一些JavaScript解决方案以编程方式单击DOM元素。 Browser实例的executeJavaScriptAndReturnValue()方法是同步的,并将等到执行处理此DOM元素上的单击操作的所有JavaScript事件侦听器。不过,当点击操作导致页面加载时,您仍应检查浏览器是否正在加载。 请查看下面的代码示例:
browser.executeJavaScriptAndReturnValue("document.getElementById('converted some xPath expression').click();");