2017-01-08 12 views
0

Я пытаюсь получить все изображения, особенно с этого сайта: http://web.archive.org/web/20160110012916/http://habibemaia.com/. Я могу получить почти все, собирая все теги «src» и загружая оттуда, но есть проблемы с основным изображением, которое изменяется на javascript либо с помощью времени, либо на событие клика. Я настроил мой WebClient так:HtmlUnit click() на div не запускает 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")); 
    } 
} 

Если я нажимаю на этот Див ИНТ браузер, появляется новое изображение. К сожалению, этот код не запускает javascript, который изменяет изображение. Я пробовал использовать

webClient.waitForBackgroundJavaScript(3000); 

после щелчка(), как предложено в другом месте, но не повезло. Страница не изменяется. Теперь я полностью из идей. Спасибо за помощь.

ответ

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

оба варианта не имеют параметров. Если вы вызываете их после какого-либо действия, сделайте только смысл - удалите это из части настройки вашего кода.

Что касается изображений: я быстро проанализировал страницу с помощью firebug. Для меня это похоже на то, что все изображения являются частью кода, а javascript только переключает видимость (с некоторыми эффектами).

Может быть что-то вроде:

  • найти DIV с классом «cameraCont»
  • перебрать всех детей со стилем «cameraSlide»
  • каждый из этого DIV имеет Img ребенка, который указывает на другое изображение
+0

Вы правы, что решили. И спасибо за другие советы тоже! – Johnny

+0

Хм, я вижу ссылки на изображения в отладке Chrome, но когда я делаю getPage(), только первое изображение есть, остальные divs пусты. – Johnny

+0

Возможно, потому что в других divs есть дисплей: на них нет стиля? Я бы хотел, чтобы эти divs собирали все div, а не по классу или id. Я использую версию 2.20, которая может быть проблемой? – Johnny