Send_keys函数触发错误消息:“消息:元素不可交互”

时间:2019-05-17 14:24:29

标签: python selenium

我正在使用硒来填写此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')

谢谢!

3 个答案:

答案 0 :(得分:1)

正在访问的页面中,选择器by_xpath('//*[@id="town"]')返回了2个元素,一个是“ mm-ui-autocomplete”,另一个是“ input”。

“ mm-ui-autocomplete”对于真正的用户是不可见的,也无法与之交互,这可能是引发您所拥有的异常的原因,当选择器返回的元素超过一个时,selenium总是优先匹配,因此,假设您要在“ Localidad”字段上键入内容,那就是选择了错误的元素。

尝试将选择器更改为by_xpath('//input[@id="town"]'),然后查看其是否有效。

希望有帮助。

答案 1 :(得分:1)

您可以尝试使用此CSS选择器:

input[id='town']

代码

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

您使用的xpath (//*[@id="town"])有两个条目:

一个带有mm-ui-autocomplete标签的标签,另一个带有input标签的标签。

始终优先于xpath而不是css选择器。比xpath更稳定。

如果您不想使用CSS选择器,则可以使用xpath:

//input[@id='town']  

代码:

driver.find_element_by_xpath("//input[@id='town']").send_keys('1')

答案 2 :(得分:0)

就我而言,123</guid> 在前端完成加载之前没有工作。

我通过在 123</id> 之前添加 find_element 解决了这个问题。您需要通过 sleep(2) 导入函数。