div 上的 HtmlUnit click() 不会触发 JavaScript
HtmlUnit click() on div does not trigger JavaScript
我正试图从这个网站获取所有图片:http://web.archive.org/web/20160110012916/http://habibemaia.com/。通过收集所有 "src" 标签并从那里下载,我几乎可以获得所有内容,但是主图片存在问题,主图片被 javascript 改变,无论是在时间上还是在点击事件上。我这样设置我的网络客户端:
webClient.getOptions().setCssEnabled(true);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.waitForBackgroundJavaScript(15000);
webClient.waitForBackgroundJavaScriptStartingBefore(5000);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
webClient.getOptions().setUseInsecureSSL(true);
在我得到 div 之后,我尝试像这样使用点击:
HtmlPage newPage = div.click();
DomNodeList<DomElement> newImages = newPage.getElementsByTagName("img");
for (DomElement img : newImages) {
if (img.hasAttribute("src")) {
newImagesStrings.add(img.getAttribute("src"));
System.out.println("Image added: "+img.getAttribute("src"));
}
}
如果我在浏览器中单击此 div,则会出现一个新图像。不幸的是,此代码不会触发更改图像的 javascript。我试过使用
webClient.waitForBackgroundJavaScript(3000);
在 click() 之后,如其他地方所建议的那样,但没有成功。页面没有变化。现在我完全没有想法了。感谢您的帮助。
webClient.waitForBackgroundJavaScript(15000);
webClient.waitForBackgroundJavaScriptStartingBefore(5000);
均为无选项设置。只有在您执行某些操作后调用它们才有意义 - 从代码的设置部分删除它。
关于图片:我用 firebug 对页面进行了快速分析。对我来说,看起来所有图像都是代码的一部分,javascript 仅切换可见性(带有一些奇特的效果)。
可能是这样的:
- 找到 div 和 class 'cameraCont'
- 遍历具有 'cameraSlide'
样式的所有子项
- 每个 div 都有一个指向不同图像的 img 子图像
我正试图从这个网站获取所有图片:http://web.archive.org/web/20160110012916/http://habibemaia.com/。通过收集所有 "src" 标签并从那里下载,我几乎可以获得所有内容,但是主图片存在问题,主图片被 javascript 改变,无论是在时间上还是在点击事件上。我这样设置我的网络客户端:
webClient.getOptions().setCssEnabled(true);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.waitForBackgroundJavaScript(15000);
webClient.waitForBackgroundJavaScriptStartingBefore(5000);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
webClient.getOptions().setUseInsecureSSL(true);
在我得到 div 之后,我尝试像这样使用点击:
HtmlPage newPage = div.click();
DomNodeList<DomElement> newImages = newPage.getElementsByTagName("img");
for (DomElement img : newImages) {
if (img.hasAttribute("src")) {
newImagesStrings.add(img.getAttribute("src"));
System.out.println("Image added: "+img.getAttribute("src"));
}
}
如果我在浏览器中单击此 div,则会出现一个新图像。不幸的是,此代码不会触发更改图像的 javascript。我试过使用
webClient.waitForBackgroundJavaScript(3000);
在 click() 之后,如其他地方所建议的那样,但没有成功。页面没有变化。现在我完全没有想法了。感谢您的帮助。
webClient.waitForBackgroundJavaScript(15000);
webClient.waitForBackgroundJavaScriptStartingBefore(5000);
均为无选项设置。只有在您执行某些操作后调用它们才有意义 - 从代码的设置部分删除它。
关于图片:我用 firebug 对页面进行了快速分析。对我来说,看起来所有图像都是代码的一部分,javascript 仅切换可见性(带有一些奇特的效果)。
可能是这样的:
- 找到 div 和 class 'cameraCont'
- 遍历具有 'cameraSlide' 样式的所有子项
- 每个 div 都有一个指向不同图像的 img 子图像