我有问题登录到网站(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
许多元素。email
和password
分别突出显示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