Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Вопрос по работе со списком List<IWebElement>!

page-object
selenium
webdriver
Теги: #<Tag:0x00007f7b61ea5590> #<Tag:0x00007f7b61ea5428> #<Tag:0x00007f7b61ea5270>

(Саша Левченко) #1

Подскажите пожалуйста как правильно работать со списком элементов в PageObject

Суть Вопроса:

я нахожу список элементов вот так:

[FindsBy(How = How.CssSelector, Using = ".quick-query>a")]
public IList<IWebElement> head_nav;

потом в самом тесте пытаюсь кликнуть на каждый элемент списка так

foreach (IWebElement el in head_nav)
{
   el.Click();
   driver.Navigate().Back();
}

И вот тут после первого удачного клика мне выдает вот такую ошибку: element is not attached to the page document

Подскажите пожалуйста как решить эту проблему! Спасибо огромное


(Виталий Коряков) #2

Элемент мог не прогрузиться, а клик уже происходит. Попробуйте сделать ожидание, пока не загрузится элемент.


(Саша Левченко) #3

Пробовал! Тут проблема в том что после первого клика все элементы списка обнуляются! Список есть! элементы тоже есть но внутри пусто!


(Виталий Коряков) #4

Как такое может быть )
А как вы выбераете элементы? После каждой загрузки страницы?
Выбирайте один раз, и ожидайте появления, потом кликайте.


(Саша Левченко) #5

я просто пытаюсь кликнуть на каждый элемент ранее определенного списка!
первый раз кликаю( все хорошо меня перевело на другую страницу) потом я возвращаюсь на исходную страницу и кликаю на следующий элемент списка! но тут и возникает эта ошибка!

когда я проходил в debug у видел что после первого клика все элементы списка потерялись, там просто мусор хранится! В обход этой проблеме приходится после кождого клика опять (на исходной странице) искать весь список, и нажимать уже на следующий элемент! Тогда оно работает! но как то это каряво! Вот думаю как это решить


(You Rooock) #6

У вас просто падает StaleElementException.
На странице банально уже нет того элемента, который вы нашли.


(Саша Левченко) #7

я только что изменил цикл foreach на for и все отрабатывает хорошо! Но я так и не понял суть! почему foreach так странно себя ведет


(Tominor) #8

покажите код
Скорее всего в foreach вы вызываете коллбек для старых элементов, а а фор вым льняное их поиск на каждой итерации