蟒蛇Selenium"Unable to locate element"



我正试图在需要的时候使用Selenium自动注册一个电子邮件帐户。这对我来说只是一个有趣的学习项目。就我而言,我不明白为什么它找不到元素。此代码在登录页上运行良好,但在注册页上运行不正常。我尝试过所有不同的Selenium命令,甚至尝试过使用ID和类名。要么是说它找不到元素,要么是说键盘无法访问它。

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
import time

options = Options()
driver = webdriver.Firefox(options=options, executable_path=r'geckodriver.exe')

driver.get("https://mail.protonmail.com/create/new?language=en")
time.sleep(10)
username_input = driver.find_element_by_id("username").send_keys("testusername")

这里还有HTML代码:https://i.stack.imgur.com/O2xRV.png

用户名字段在iframe中,您需要切换到ifname才能执行此操作。以下是运行良好的代码:

driver.get("https://mail.protonmail.com/create/new?language=en")
driver.switch_to.frame(driver.find_element_by_css_selector("iframe[title='Registration form'][class='top']"))
driver.find_element_by_id("username").send_keys("some string")
  1. 点击此处阅读更多关于iframe的信息
  2. 了解有关如何使用Python切换到iframe/framset的更多信息此处为硒结合

更新:

wait = WebDriverWait(driver, 30)
driver.get("https://mail.protonmail.com/create/new?language=en")
driver.switch_to.frame(driver.find_element_by_css_selector("iframe[title='Registration form'][class='top']"))
driver.find_element_by_id("username").send_keys("some string")
driver.switch_to.default_content()
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
sleep(5)
driver.switch_to.frame(driver.find_element_by_css_selector("iframe[title='Registration form'][class='bottom']"))
wait.until(EC.element_to_be_clickable((By.NAME, "submitBtn"))).click()

我不确定我是否看到了足够的代码来进行诊断,但我认为定义username_input的方式似乎有问题。driver.find_element_by_id("username").send_keys("testusername")实际上没有返回任何内容,所以看起来您正在设置username_input = null

相关内容

最新更新