Python 硒 "Unable to locate element"
Python Selenium "Unable to locate element"
我正在尝试使用 Selenium 在需要时自动注册电子邮件帐户。这对我来说只是一个有趣的学习项目。对于我的生活,我不明白为什么它找不到元素。此代码在登录页面上运行良好,但在注册页面上运行不正常。我尝试了所有不同的 Selenium 命令,甚至尝试使用 ID 和 class 名称。要么是说它找不到元素,要么是键盘无法访问它。
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.imgur.com/ZaBMTzG.png
我不确定我是否看到了足够的代码来进行诊断,但我认为您定义 username_input
的方式似乎有问题。 driver.find_element_by_id("username").send_keys("testusername")
实际上并没有 return 任何东西所以看起来你正在设置 username_input = null
.
用户名字段在 iframe 中,您需要切换到 iframe 才能正常工作。
下面是运行良好的代码:
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")
更新:
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()
我正在尝试使用 Selenium 在需要时自动注册电子邮件帐户。这对我来说只是一个有趣的学习项目。对于我的生活,我不明白为什么它找不到元素。此代码在登录页面上运行良好,但在注册页面上运行不正常。我尝试了所有不同的 Selenium 命令,甚至尝试使用 ID 和 class 名称。要么是说它找不到元素,要么是键盘无法访问它。
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.imgur.com/ZaBMTzG.png
我不确定我是否看到了足够的代码来进行诊断,但我认为您定义 username_input
的方式似乎有问题。 driver.find_element_by_id("username").send_keys("testusername")
实际上并没有 return 任何东西所以看起来你正在设置 username_input = null
.
用户名字段在 iframe 中,您需要切换到 iframe 才能正常工作。 下面是运行良好的代码:
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")
更新:
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()