尝试使用selenium登录网站时抛出TimeoutException或ElementNotInteractableEx



我有问题登录到网站(memodo.de/login),因为登录表单是不可交互的。在我的代码中,我得到一个超时异常或一个elementnotinteractitable异常。

请参阅这里的html代码的网站,以及我目前的代码。如果有人能帮我解决这个问题,我会很感激的。

我已经尝试使用execute_script命令,但没有任何运气。

谢谢!

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
import time
import os

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://www.memodo.de/login')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='email']"))).send_keys("email")
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='passwort']"))).send_keys("password")
button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type='submit']"))).click()

HTML网站代码

您正在尝试的xpaths是DOM中的highlighting许多元素。emailpassword分别突出显示2个元素,submit按钮突出显示DOM中的5个元素。

我们用来查找元素的定位器应该是唯一的,即在DOM中xpath旁边可见的1/1。查看How do I write good locators以获得更清晰的信息。

你可以像下面这样尝试。

driver.get("https://www.memodo.de/login")
wait = WebDriverWait(driver,30)
email = wait.until(EC.element_to_be_clickable((By.XPATH,"//div[@class='register--login-email']/input")))
email.send_keys("Email@email.com")
password = wait.until(EC.element_to_be_clickable((By.XPATH,"//div[@class='register--login-password']/input")))
password.send_keys("password")
submit = wait.until(EC.element_to_be_clickable((By.XPATH,"//form[@id='login--form']//button")))
submit.click()

你也可以使用这些路径

(//input[@id='email'])[2]  # For Email Field  
(//input[@id='passwort'])[2] # For password Field 
//form[@id='login--form']//button # For submit button

最新更新