#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 секунд после нажатия кнопки раньше. Я подумал что-то подобное, если цикл не распечатал правильный идентификатор