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

Элементы найденные через FindElements не содержат в себе Text (InnerHtml)

webdriver
Теги: #<Tag:0x00007f7b64675e80>

(Игорь Евсеев) #1

Прошу помочь в решении следующей проблемы!

В тест-кейсе есть шаг, на котором пользователь должен выбрать определенный день в календаре.
Для “сбора” дней из календаря я решил использовать метод FindElements.
Собственно, после этого происходит проход по дням (элементам типа IWebElement) до тех пор, пока атрибут Text не будет соответствовать необходимому числу.

Но столкнулся с тем, что найденные FindElements’ом по селектору элементы содержат пустое значение в атрибуте Text - вижу это в режиме отладки в VisualStudio…

Однако, в Chrome в панели разработчика после ручного поиска элементов по тому же селектору наблюдаю, что InnerHtml не пустой.

Помогите, пожалуйста, разобраться, в чем тут дело.

Тело моего метода ниже:

public void SetCalendarDay(string selector,byte setDay)
{
ReadOnlyCollection days = FindElements(selector);

		foreach (IWebElement i in days)
		{
			if (i.Text==setDay.ToString()) 
			{
				i.Click();
				return;
			}				
		}
	}

Селектор, который передаю в метод: #ui-datepicker-div>table>tbody>tr>td>a


(Taras) #2

InnerHtml что ето ? скиньте скрин инспектора


(Maxim Zaitsev) #3

Для начала стоит отметить, что Text это не InnerHtml, а innerText

По сути вопроса: проблема может быть в том, что текст не успевает прогрузится в элементы, так как поиск через FindElements выполняется мгновенно. Нужно ставить ожидание.


(Evgenii) #4

Постройте локатор таким образом чтобы кликать сразу на тот день который вам нужен, а не перебирать все дни.