Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Помогите разобраться с StaleElementReferenceException в robotframework

robot-framework
selenium
Теги: #<Tag:0x00007fedbbc54a08> #<Tag:0x00007fedbbc548a0>

(Kuanysh Bekturganov) #1

Доброго времени суток товарищи! Помогите пожалуйста разобраться с проблемой.
Есть robot тест:

*** Test Cases ***
Test_1
    .....тут авторизация итд
    Заполнить поле поиск и нажать на ENTER    text1
    Выделить объект                                              text1

А реализация этих keyword-ов следующие:

Заполнить поле поиск и нажать на ENTER 
    [Arguments]    ${text}
    Wait Until Element Is Visible    xpath = .//input[@class="ns-input ns-basicChooserSearchInput"]    60s
    Input Text    xpath = .//input[@class="ns-input ns-basicChooserSearchInput"]    ${text}
    Press Key    xpath = .//input[@class="ns-input ns-basicChooserSearchInput"]    \\13
Выделить объект  
    [Arguments]    ${object}
    Wait Until Element Is Visible    xpath = .//div [@class="ns-basicChooserItemName" and @title="${object}"]    60s
    Click Element    xpath = .//div [@class="ns-basicChooserItemName" and @title="${object}"]

Проблема в том что когда выполняется keyword “Выделить объект” тест падает(но не всегда тест падает), и в output-е есть ошибка:

StaleElementReferenceException: Message: Element is no longer attached to the DOM
Stacktrace:

Примерное решение вроде нашел в (http://software-testing.ru/forum/index.php?/topic/21965-borba-so-staleelementreferenceexception-element-is-no-longer-attached-to-the-dom/).

Но как сделать try catch в robotframework? Если есть предложения, подскажите пожалуйста!

Спасибо Всем!


(rmerkushin) #2

Скорее всего у вас динамический элемент, вам нужно дождаться его обновления через wait for condition или как нибудь ещё.


(Taras) #3

Page Factory использовать и переписать к чертям LocatingElementHandler клас селениумовский … я боролся с етим ексепшином несколько недель, потом пришел к виводу что вейти нифига не динамичнай фигня и они всегда будут разние при разних ситуациях…LocatingElementHandler отвечает за поиск елемента в PageFactory, в нем можно етот ексепшин похендлить и переискать елемент наново например с каким то полинг механизмом и таймаутом


(Имя Фамилия) #4

Удалось ли вам пофиксить данную проблему?