首页 > 解决方案 > ElementNotInteractableException:将文本发送到电子邮件字段的元素不可交互错误

问题描述

设置

尝试使用 Python 和 Selenium登录此登录表单。


代码

url = 'https://activeshop.com.pl/customer/account/login/'
browser.get(url)


# fill out login details 
account_name = 'my@email.com' 
password = 'mypassword' 

login_details = {
                'login': account_name,
                'password': password
                }

# inserts account name in login field      
fill_field('id','email',login_details['login'])      

# inserts password in password field
fill_field('id','pass',login_details['password'])   

在哪里,

def fill_field(type, type_path, input):
    if type == 'id':
        field = browser.find_element_by_id(type_path)        
    field.clear()
    field.send_keys(input)

问题

上面的代码曾经可以工作,但是由于该站点已经进行了改造,因此ElementNotInteractableException: element not interactable在尝试填写字段时会产生一个。

我试过了XpathsCSS选择器等等,但没有填写电子邮件地址和密码。

我可以通过 Selenium 获取页面上的文本。

input元素处有一些东西阻挡了硒。有任何想法吗?

标签: pythonseleniumselenium-webdriver

解决方案


页面上有超过 1 个email,第一个不可见。您可以获取所有元素,然后过滤可见的元素:

field = list(filter(lambda x: x.is_displayed(), browser.find_elements(By.ID, "email")))[0]
field.send_keys("email")

推荐阅读