我正在使用硒来填写此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')
谢谢!
答案 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)
导入函数。