2016-12-16 2 views
0

Я программирую автоматизированный бот, который считывает данные с сайта. Он правильно считывает данные, но теперь я хотел сделать это с интервалом с таймерами. Итак, я написал класс, расширяющий TimerTask, и он сработал. У меня теперь есть проблема, что моя программа читает каждый раз одни и те же данные, даже если она изменилась.Selenium Java refresh element

messages = Driver.findElements(By.className("messages")).get(0).findElements(By.className("message")); 
    String message = null; 
    for(int i = 0; i < messages.size(); i++){ 
     try{ 
      message = messages.get(i).findElements(By.className("text")).get(0).getAttribute("innerHTML"); 
      System.out.println(message); 
     }catch(StaleElementReferenceException e){ 
      e.printStackTrace(); 
     } 

    } 

Если я сделать это с помощью JavaScript на этом сайте, я всегда получить обновленные результаты, но здесь в моей Java программы `s каждый раз то же самое.

+1

Вы всегда хотите получить первые «сообщения» ?? Driver.findElements (By.className ("messages")). Get (0) Вы хотите увеличить его? как ваш сайт структурирован? –

+0

есть только один элемент сообщения, но я должен искать его с классом, поэтому я делаю get (0) – Talcore

+0

Пожалуйста, разместите снимок экрана с некоторыми примерами данных вместе с текстом соответствующего HTML. – JeffC

ответ

0

Я хотел бы начать с упрощения кода. Я бы порекомендовал вам потратить некоторое время на чтение CSS-селекторов. Они очень мощные и быстрые. Вы можете в принципе объединить все три ваших локатора в один, чтобы вам нужно было только один раз искать, и вы не должны заканчивать устаревшими элементами.

for (WebElement message : Driver.findElements(By.cssSelector(".messages .message .text"))) 
{ 
    System.out.println(message.getAttribute("innerHTML")); 
} 

CSS Selectors Reference

SauceLabs: CSS Selectors Tips

Примечание: если вы хотите только первый элемент, нет необходимости использовать .findElements().get(0), просто использовать .findElement(). Обратите внимание на единственное число, а не на множественное число.

+0

Nice info mate, но я получаю еще эта повторяющаяся вещь – Talcore

+0

Вы действительно загрузите правильную страницу? Тот, который должен быть обновлен? Если это так, то это какая-то странная проблема кеширования. Этот код должен работать ... или вы будете вам нужно сделать еще несколько исследований и посмотреть, что еще вы можете найти. Можете ли вы опубликовать ссылку на страницу? – JeffC

+0

Этот сайт называется обществом, и, как я сказал, с моим расширением javascript он работал, но только с селеном в сочетании с фантомами, он не работает – Talcore