我正在尝试使用 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()
答案 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)