python selenium-Element当前不可交互,可能无法操作

2024-04-20 15:03:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图通过python中的selenium填充表单字段:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Firefox()        
driver.get("http://www.miralinks.ru/")
driver.implicitly_wait(30)
login = driver.find_element_by_css_selector('input[placeholder="Логин"]')
hov = ActionChains(driver).move_to_element(login)
hov.perform()
login.clear()
login.send_keys("login")
pwd = driver.find_element_by_css_selector('input[placeholder="Пароль"]')
pwd.clear()
pwd.send_keys("pass")

但这次失败了,只有一个例外:

Element is not currently interactable and may not be manipulated

为什么会发生这种事,我们要解决它?

网络驱动程序__version__ = '2.45.0'


Tags: fromimportinputbydriverseleniumpwdlogin
3条回答

我也有这个问题,但在我的情况下,原因略有不同。在导航到页面之前,我需要指定窗口的大小:

driver.Manage().Window.Size = new Size(width, height);

这是因为默认窗口大小呈现页面的宽度是媒体查询隐藏元素的宽度,这导致“元素当前不可交互,可能无法操作”错误。

问题是还有另外两个input元素和placeholder="Логин"是不可见的。使您的CSS选择器特定于登录表单:

login = driver.find_element_by_css_selector('form#loginForm input[placeholder="Логин"]')
pwd = driver.find_element_by_css_selector('form#loginForm input[placeholder="Пароль"')

对我来说,问题是另一个元素覆盖了输入框。在我的例子中,有一个花哨的标签代替了一个占位符,在单击时向上显示动画。

诀窍是先点击标签触发动画,然后填充输入字段

相关问题 更多 >