ЧТО ТАКОЕ ИСКЛЮЧЕНИЕ УСТАРЕВШЕГО ЭЛЕМЕНТА ССЫЛКИ В SELENIUM WEBDRIVER И КАК ЭТО ИСПРАВИТЬ

В этой серии руководств по Selenium наша следующая статья посвящена причинам исключения ссылки на устаревший элемент, тому, как преодолеть StaleElementReferenceException в Selenium WebDriver, а также следующим

Что такое StaleElementReferenceException в Selenium Webdriver

Устаревший означает старый, испорченный, уже не свежий. Устаревший элемент означает старый элемент или более недоступный элемент. Предположим, что на веб-странице есть элемент, указанный как WebElement в WebDriver. Если DOM изменяется, то WebElement устареет. Если мы попытаемся взаимодействовать с устаревшим элементом, возникнет StaleElementReferenceException .

Исключения TestNG

ЧТО ТАКОЕ ИСКЛЮЧЕНИЕ УСТАРЕВШЕГО ЭЛЕМЕНТА ССЫЛКИ В SELENIUM WEBDRIVER И КАК ЭТО ИСПРАВИТЬ

Каковы причины исключения StaleElement

Мы сталкиваемся с этим исключением ссылки на устаревший элемент, когда элемент, с которым мы взаимодействуем, уничтожается, а затем снова создается заново. Когда это происходит, ссылка на элемент в DOM становится устаревшей. Следовательно, мы не можем получить ссылку на элемент.

ЧТО ТАКОЕ УСТАРЕВШИЙ ИСКЛЮЧЕНИЕ ССЫЛКИ НА ЭЛЕМЕНТ IN SELENIUM WEBDRIVER & HOW TO FIX IT

Исключение ссылки на устаревший элемент — это ошибка WebDriver, которая возникает в следующих двух случаях.

Причина 1: указанный веб-элемент был удален полностью.

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

Причина 2: элемент, на который указывает ссылка, больше не привязан к модели DOM

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

Из двух вышеуказанных причин первый случай встречается чаще, чем второй.

Как преодолеть исключение ссылки на устаревший элемент в Selenium:

Здесь я расскажу показать вам несколько способов преодоления исключения StaleElementReferenceException. Вы также можете обратиться к официальному сообщению Selenium

Решение 1. Обновление веб-страницы

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

Предположим, вы пытаетесь щелкнуть ссылку и получаете исключение устаревшего элемента.

Пример кода для устранения проблемы

12

driver.navigate().refersh();driver.findElement(By.xpath(“здесь xpath”)).click();

Решение 2 : Использование блока Try Catch

Если элемент не присоединен к DOM, вы можете попробовать использовать блок try-catch в цикле for

1234567891011

//Используя цикл for, он делает 3 попытки.//Если элемент находится в первый раз, то он прерывается из цикла for и выходит из цикла for(int i=0; i<=2;i++){  try {     driver.findElement(By.xpath(“здесь xpath”)).click(); ломать; }  catch(Exception e){     Sysout(e.getMessage()); }}

Решение 3. Использование ExpectedConditions.refreshed

Подождите, пока элемент станет доступным

1

wait.until(ExpectedConditions.presenceOfElementLocated(By .id(“таблица”)));

Используйте ExpectedConditions.refreshed, чтобы избежать исключения StaleElementReferenceException и снова получить элемент. Этот метод обновляет элемент, перерисовывая его, и мы можем получить доступ к элементу, на который указывает ссылка. -tab-size:4;-webkit-tab-size:4;tab-size:4;размер шрифта:12px!важно;высота строки:15px!важно>wait.until(ExpectedConditions.refreshed(ExpectedConditions.stalenessOf( "таблица")));

1< тд класс = карандаш-код>wait.until(ExpectedConditions.refreshed(ExpectedConditions.stalenessOf(“table”)));

Решение 4. Использование POM

Мы можем обрабатывать устаревший элемент Ссылка на исключение при использовании POM.

Обязательно к прочтению: шаблон проектирования объектной модели страницы

Мы могли бы избежать исключения StaleElementException, используя POM. В POM мы используем метод initElements(), который загружает элемент, но не инициализирует элементы. initElements() принимает последний адрес. Он инициализируется во время выполнения, когда мы пытаемся выполнить какое-либо действие над элементом. Этот процесс также известен как Отложенная инициализация.

В заключение:

StaleElementReferenceException — очень распространенное исключение, с которым мы сталкиваемся в наших тестах Selenium. . Надеюсь, теперь вы узнали, что это такое и как это исправить.

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

Как исправить исключение устаревшего элемента?< /h3>

Чтобы исправить эту ошибку устаревшего элемента, мы используем одно из следующих исправлений
1. Чтобы обновить страницу
2. Использование try-catch
3. Использование ExpectedConditions.refreshed
4. Использование POM

Каков список исключений в Selenium?

Обратитесь к этому, чтобы узнать больше об исключениях в Selenium WebDriver.

Как Python обрабатывает исключение устаревших элементов в селене?

Блок try and exclude в Python используется для обработки устаревших исключение элемента в селене.
TAG: qa

От QA genius

Adblock
detector