Как найти элемент для HTML ниже, используя Selenium и Python - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь найти xpath для тега HTML ниже. но не могу найти в селене. так как я новичок, мне нужна помощь и предложения. получаю ошибку:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@class='react-autosuggest__input react-autosuggest__input--open']"}
(Session info: chrome=73.0.3683.103)

Это элемент HTML.

<input type="text" autocomplete="off" aria-autocomplete="list" aria-controls="react-autowhatever-1" class="react-autosuggest__input react-autosuggest__input--open" placeholder="From" value="">

Я попробовал и сделал этот xpath для вышеупомянутого HTML.но же выдает ошибку.

//*[@class='react-autosuggest__input react-autosuggest__input--open']   

Я ожидаю, что выход вышеупомянутого xpath найдет элемент в селене, но в действительности я получаю ошибку.

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Попробуйте с WebDriverWait, установите только более длительное ожидание, например:

element = WebDriverWait(driver, 60).until(expected_conditions.element_to_be_clickable((By.CSS_SELECTOR, "input[placeholder='From']")))
0 голосов
/ 10 апреля 2019

Элемент выглядит как элемент React , поэтому, чтобы найти элемент, вы должны вызвать WebDriverWait , чтобы элемент был активным , и вы можете использовать любой из них. из следующих решений:

  • Использование CSS_SELECTOR:

    element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.react-autosuggest__input.react-autosuggest__input--open[placeholder='From']")))
    
  • Использование XPATH:

    element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='react-autosuggest__input react-autosuggest__input--open' and @placeholder='From']")))
    
  • Примечание : необходимо добавить следующие операции импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
...