Задать вопрос
kykyryky
@kykyryky

Как правильно найти элемент на веб странице?

На странице есть радио-кнопки с названием городов. История выбирания городов отображается в отдельном блоке справа.

Нужный мне элемент я выбираю так:

IWebDriver driver = new ChromeDriver();
IWebElement element = driver.FindElement(By.XPath("//*[contains(text(), '" + CityName + "')]"));
element.Click();


Тут всё нормально, находит и кликает. Но иногда нужно кликнуть на город повторно, и селениум выбирает не нужный радиобаттон, а тот правый блок.
Я так понимаю, проблема в выражении XPath. Как мне исправить выражение, чтобы однозначно выбирались именно нужные мне кнопки?
Например все радиокнопки у меня лежат в div c классом "div1". Внутри этого дива может быть еще вложенные элементы, например списки для разделения кнопок по столбцам, и т.д.
  • Вопрос задан
  • 2454 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
glebovgin
@glebovgin
Full Stack Web Developer
Просто добавьте в xpath немного конкретики (при условии, что div1 - единственный класс):
//div[@class="div1"]/*[contains(text(), '" + CityName + "')]


Это не самый элегантный способ, но сработать должен. Вариантов решить задачу может быть несколько, но надо смотреть html-код страницы для этого.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sim3x
@sim3x
Chrome
f12
Inspect element
mouse right click on element
In menu: Copy -> Copy XPath

Когда и ето не сработает, гугли как писать xpath запрос ручками
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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