2016-11-14 2 views
0

Я попытался автоматизировать сценарий, где условие заключается в том, что я должен выбрать все варианты выпадающего списка, и я должен щелкнуть по этим параметрам один за другим. Я попытался с кодом, но он нажимает только на первый вариант. И показывает ошибку, поскольку устаревший элемент не доступен для кликов. Пожалуйста, помогите.Элемент Stale Исключение в web-сервере selenium

+0

Вы должны убедиться, что страница загружена и весь запрос выполнен, и после этого вы можете искать свой элемент. – lauda

+0

Вы используете POM? Если да, я могу что-то предложить. –

+0

Да, пожалуйста, скажите мне – Test

ответ

0

StaleElementException возникает, если я нахожу элемент, DOM обновляется, а затем пытаюсь взаимодействовать с элементом.

Итак, как мне его обрабатывать? использовать следующий метод щелчка, пытаясь нажать несколько раз элемент:

public boolean retryingFindClick(By by) { 
     boolean result = false; 
     int attempts = 0; 
     while(attempts < 2) { 
      try { 
       driver.findElement(by).click(); 
       result = true; 
       break; 
      } catch(StaleElementException e) { 
      } 
      attempts++; 
     } 
     return result; 
} 

Взятые это EXCELENT решение от here.

0

Когда вы выбираете вариант из раскрывающегося списка, ваш DOM также обновляется. Таким образом, вам также нужно обновить свой объект. См. Фрагмент кода кода:

Select select = new Select(driver.findElement(By.cssSelector("your dropdown's locator"))); // you may use any locator of your choice 
    List<WebElement> options = select.getOptions(); 

    for(WebElement option : options){ 
      select.selectByVisibleText(option.getText()); 

      //re-assign your select object since your page has been reloaded after selecting an option 
      select = new Select(driver.findElement(By.cssSelector("your dropdown's locator"))); 
    } 
+0

Пробовал этот, но показывал тот же – Test

Смежные вопросы