发现卡网站上登录按钮的硒元素不可交互错误

时间:2021-07-08 16:00:48

标签: python selenium selenium-webdriver

我正在尝试使用 Selenium 登录 Discover Card website。此脚本将用于自动下载报表。

但是,我的功能适用于大多数网站,但不适用于 Discover Card 登录表单。我的函数找到登录按钮(ID 为“log-in-button”),但 Selenium 失败并显示错误“element not interactable”。

这是我的小功能。

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

def login_by_id(username, password, username_id, password_id, login_button_id, driver):
    # wait for form to be visible to Selenium
    username_input = WebDriverWait(driver, 5).until(lambda x: x.find_element(By.ID, username_id))

    # fill in form
    username_input.send_keys(username)
    password_input = driver.find_element_by_id(password_id)
    password_input.send_keys(password)

    # click on login button
    login_button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, login_button_id)))
    login_button.click()

2 个答案:

答案 0 :(得分:1)

我尝试在 the website URL shared by you 上登录 使用下面的代码,它似乎工作正常:

driver.maximize_window()
driver.implicitly_wait(30)
driver.get("https://www.discover.com/")
wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.ID, "userid-content"))).send_keys('some user name')
wait.until(EC.element_to_be_clickable((By.ID, "password-content"))).send_keys('some password')
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[class$='content-login-checkbox']+input+input"))).click()

进口:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

答案 1 :(得分:1)

该页面上有两个元素,其 ID 为“登录按钮”。

如果您在模态隐藏时尝试与模态中的人进行交互会导致此类错误。

模态窗口的代码出现在默认登录框的代码之前,所以它会首先找到隐藏的。

enter image description here

你可以试试这些

(By.XPATH, '//input[@class="btn-primary log-in-button right"]')
#or 
(By.CSS_SELECTOR, '.btn-primary.log-in-button.right')
相关问题