@Esserj

Как найти элемент по индексу в методе ожидания element_to_be_clickable?

На странице есть несколько элементов с общим css селектором. Мне необходимо дождаться загрузки определенного элемента. Для этого использую ожидание:
wait = WebDriverWait(browser, timeout=100, poll_frequency=0.1, ignored_exceptions=params_for_ignored_exceptions)

wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '[title="Связь"]')))

Но каким образом в эту конструкцию передать список и указать нужный индекс элемента?
  • Вопрос задан
  • 132 просмотра
Решения вопроса 1
Тут есть сразу несколько вариантов, вот некоторые из них.
Попробуйте использовать, подставляя нужное вам значение N, в первом и втором случае нумерация с единицы, в третьем с нуля.

1. Использовать :nth-child() в CSS
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '[title="Связь"]:nth-child(N)')))

2. Искать элемент через XPath
wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@title="Связь"][N]')))

3. В метод element_to_be_clickable можно передавать не только локатор, но и сам элемент
elements = driver.findElements(By.CSS_SELECTOR, '[title="Связь"]');
wait.until(EC.element_to_be_clickable(elements[N]))


UPD: Обновил второй способ, в первый раз забыл поставить звёздочку, звёздочка обозначает любой элемент, в место нее можно подставить свой элемент (div, span, li, td и т.д.) чтобы уточнить локатор.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы