Добрый день, коллеги. Возник, вроде, банальный вопрос. Но найти ответа на него почему-то не смог.
Есть перебор элементов(отзывы на сайте). Тут я перебираю их все.
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;
Каким образом я могу перебирать конкретный элемент?
По итогу, все это работает и работает без каких-либо проблем, но мне очень не нравится, что я все это реализовал через такие костыли. Верю, что есть какое-то нормальное решение, до которого я пока не додумался.