@tatianasu

Selenium не находит поле поиска, хотя локатор задан верно, что делать?

драйвер не видит элемент на странице, ищу через Xpath и в консоле разработчика нахожу верный один элемент, но драйвер его не видит при прогонке автотеста. пишет AttributeError: Element with locator ('xpath', '//div[@class="table-wrapper"]//input[@data-placeholder="Поиск"]') not found. С ожиданиями все впорядке. просто не находит... почему
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
@tatianasu Автор вопроса
Нашла решение проблемы сама. Она заключалась в том , что я не учла, что если открывается новое окно браузера, селениум этого не понимает и продолжает искать элементы в старом окне. мне помог этот код:
window_before = web_browser.window_handles[0]
    window_after = web_browser.window_handles[1]
    web_browser.switch_to.window(window_after)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
Где пример кода, в котором Вы пытаетесь получить DOM элемент? Предположу, что элемента на момент его получения - нет, соответственно оптимальнее дождаться его появления, например:
# ждать появление элемента не более 10 сек, затем... взломать пентагон!
el = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//div[@class="table-wrapper"]//input[@data-placeholder="Поиск"]')))

# мне больше css селектора нравятся
el = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".table-wrapper input[data-placeholder='Поиск']")))
Ответ написан
Ваш ответ на вопрос

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

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