Задать вопрос
Viper029
@Viper029
Программирую за печенье

Как правильно перебирать IWebElement SELENIUM C#?

Добрый день, коллеги. Возник, вроде, банальный вопрос. Но найти ответа на него почему-то не смог.

Есть перебор элементов(отзывы на сайте). Тут я перебираю их все.
IReadOnlyList<IWebElement> otzyvy = driver.FindElements(By.XPath(@"/html/body/div[1]/div[1]/div[3]/main/div/div[1]/div[5]/div[2]/div/div/div/section/div/div[1]/div[1]/div[1]/div"));
foreach (IWebElement otzyv in otzyvy)
{
.....
}

Далее, у каждого отзыва есть параметры, вроде достоинства\недостатки\комментарий и мне нужно получить их отдельно каждый. Но я не могу использовать "короткий" XPath, который начинается с элемента, выбранного в otzyv, например,
string nameOtz = otzyv.FindElement(By.XPath(@"/div/div[1]/div[1]/div/span")).Text;

Вместо этого мне приходится прописывать полный путь, при этом используя костыли в виде счетчиков, модифицируя XPath, что бы он брал нужные мне данные:
string nameOtz = otzyv.FindElement(By.XPath(@"/html/body/div[1]/div[1]/div[3]/main/div/div[1]/div[5]/div[2]/div/div/div/section/div/div[1]/div[1]/div[" + otzyvyALL.Count + "]/div[" + i + "]/div/div[1]/div[1]/div/span")).Text;


Каким образом я могу перебирать конкретный элемент?

По итогу, все это работает и работает без каких-либо проблем, но мне очень не нравится, что я все это реализовал через такие костыли. Верю, что есть какое-то нормальное решение, до которого я пока не додумался.
  • Вопрос задан
  • 89 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега Selenium
Python, JS, WordPress, SEO, Bots, Adversting
Относительные пути XPath?
By.XPath(".//div/div[1]/div[1]/div/span")
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы