Python Selenium не нашел элемент по идентификатору

#python #selenium

#python #селен

Вопрос:

Я пытаюсь найти поле ввода по идентификатору. Поле ввода выглядит так

HTML:

 <input id="hgz" onkeyup="runUpKey('form_hgzii);">
  

Python:

 driver.find_element_by_id("hgz").send_keys("test")
  

Результат:

 selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="hgz"]"}
  

При переборе всех полей ввода

 for inputs in driver.find_elements_by_tag_name('input'):
    print(inputs.get_attribute("id"))
  

Python печатает правильный идентификатор, когда я меняю код на

 for inputs in driver.find_elements_by_tag_name('input'):
    if inputs.get_attribute("id") == "hgz":
        inputs.send_keys("test")
  

это также не работает.

У кого-нибудь есть идея?

Комментарии:

1. Загружается ли элемент динамически? Я имею в виду, если это загрузится позже с помощью javascript

2. Да, он использует javascript, это меня смущает, потому что он находит идентификатор при циклическом просмотре всех входных данных

3. Попробуйте изменить get_attribute get в своем for цикле.

Ответ №1:

Вы запускаете этот код сразу после открытия страницы? Возможно, DOM не завершил загрузку. Попробуйте ввести оператор sleep, как sleep(5) перед попыткой получить элемент по идентификатору

Комментарии:

1. Уже есть спящий режим в течение 10 секунд после нажатия кнопки раньше. Я подумал что-то подобное, если цикл не распечатал правильный идентификатор