javascript - HtmlUnit click() div 不会触发 JavaScript

标签 javascript java htmlunit

我正在尝试获取所有图像,特别是来自此网站的图像: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);

点击()之后,如其他地方所建议的,但没有运气。页面没有变化。现在我完全没有想法了。感谢您的帮助。

最佳答案

webClient.waitForBackgroundJavaScript(15000);
webClient.waitForBackgroundJavaScriptStartingBefore(5000);

都是无选项设置。仅当您在执行某些操作后调用它们时,它们才有意义 - 将其从代码的设置部分中删除。

关于图像:我用 firebug 对页面进行了快速分析。对我来说,看起来所有图像都是代码的一部分,而 javascript 仅切换可见性(带有一些奇特的效果)。

也许是这样的:

  • 查找类为“cameraCont”的 div
  • 迭代所有样式为“cameraSlide”的子级
  • 每个 div 都有一个指向不同图像的 img 子级

关于javascript - HtmlUnit click() div 不会触发 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41530921/

相关文章:

javascript - 在图标上显示上下文菜单?

javascript - 如何将下面的 hashMap<String, String> 转换为可用的 JS 对象?

javascript - 如何删除plotly.js中的轴悬停信息?

java - 用于创建特定类型对象的设计模式

java - 我可以在自己的注释上使用 Spring Security @PreAuthorize 吗?

java - 无法加载或找到主类,在命令行中工作但在 IDE 中不工作

javascript - 下载 JavaScript 返回的图像 (html2canvas)

javascript - Selenium 网络驱动程序可以访问 javascript 全局变量吗?

java - HTMLUnit:很多错误

gwt - HtmlUnit 和 GWT 错误