Функция Send_keys вызывает сообщение об ошибке: «Сообщение: элемент не взаимодействует» - PullRequest
0 голосов
/ 17 мая 2019

Я использую селен, чтобы заполнить эту HTML-форму, но когда дело доходит до ввода данных, он говорит «элемент не взаимодействует». Я могу нажать на элемент, однако на самом деле отправка строки приводит к ошибке. Как я могу это исправить?

driver.get('https://www.masmovil.es/cobertura-fibra-optica-campos/')
prov = Select(driver.find_element_by_xpath('//*[@id="province"]'))
prov.select_by_index(32)
driver.find_element_by_xpath('//*[@id="town"]').send_keys('1')

Спасибо!

Ответы [ 2 ]

1 голос
/ 17 мая 2019

Можете ли вы попробовать с этим селектором CSS:

input[id='town']

код :

driver.find_element_by_css_selector("input[id='town']").send_keys('1')  

Используемый вами xpath (//*[@id="town"]) содержит две записи:

один с тегом mm-ui-autocomplete и один с тегом input.

Всегда отдавайте предпочтение селектору css, а не xpath. Это более стабильно, чем xpath.

Если вы не хотите использовать селектор CSS, то вы можете использовать xpath следующим образом:

//input[@id='town']  

код:

driver.find_element_by_xpath("//input[@id='town']").send_keys('1')
1 голос
/ 17 мая 2019

На странице, к которой вы обращаетесь, есть 2 элемента, которые возвращаются с помощью селектора by_xpath('//*[@id="town"]'), один из которых «mm-ui-autocomplete», другой - «input».

"mm-ui-autocomplete" не виден и не может взаимодействовать с реальным пользователем, это, вероятно, то, что выдает исключение, и селен всегда берет первое совпадение, когда селектор возвращает более одного элемента, поэтому, если выхотите напечатать что-нибудь в поле «Localidad», он выбирает неправильный элемент.

Попробуйте изменить селектор на by_xpath('//input[@id="town"]') и посмотрите, работает ли он.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...