Selenium超时异常python

Selenium超时异常python,python,python-3.x,selenium,selenium-webdriver,Python,Python 3.x,Selenium,Selenium Webdriver,所以,我用selenium创建了一个注册机。当此页面加载到它时,它无法通过用户名的id/xpath找到元素。另一方面,它能够找到密码、passwordc元素。我试图使用WebDriverWait函数,但它给出了超时错误。尝试了很多事情,但这件事仍然给我错误。如果可能的话,建议在最后一页上找到用户名的元素,或者一个完美的WebDriverWait代码。下面是我的代码 from selenium.webdriver.common.by import By from selenium.webdrive

所以,我用selenium创建了一个注册机。当此页面加载到它时,它无法通过用户名的id/xpath找到元素。另一方面,它能够找到密码、passwordc元素。我试图使用WebDriverWait函数,但它给出了超时错误。尝试了很多事情,但这件事仍然给我错误。如果可能的话,建议在最后一页上找到用户名的元素,或者一个完美的WebDriverWait代码。下面是我的代码

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

url = 'https://protonmail.com/'
driver = webdriver.Chrome('C://Users/AAA/Desktop/chromedriver.exe')
driver.get(url)

driver.find_element_by_xpath('//*[@id="bs-example-navbar-collapse-1"]/ul/li[8]/a').click()
time.sleep(2)
driver.find_element_by_xpath('//*[@id="signup-plans"]/div[5]/div[1]/div[1]/div/div[1]/h4').click()
time.sleep(1)
driver.find_element_by_id('freePlan').click()
time.sleep(1)
wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID, "username")))
driver.find_element_by_xpath('//*[@id="username"]').send_keys('santaking44455')
time.sleep(1)
driver.find_element_by_id('password').send_keys('25J8e5b8')
time.sleep(1)
driver.find_element_by_id('passwordc').send_keys('25J8e5b8')```

您找不到它,因为它位于html源代码中较高的
iframe
标记中。首先切换到
iframe
,然后您应该能够与元素交互

iframe=driver.find_element_by_xpath('//*[@title="Registration form"]')
driver.switch_to.frame(iframe)
driver.find_element_by_xpath('//*[@id="username"]').send_keys('santaking44455')

不要那样利用睡眠。Selenium具有所有您需要的功能,能够正确处理页面加载延迟,而无需求助于旧的“随机间隔睡眠”黑客。