无法在 Python 中通过 ID 与硒和 chromedriver 找到元素



我一直收到此错误。 我正在尝试登录我的 godaddy 帐户,以便每天用新的文本自动更新我的网站。它一直说它无法通过 id 找到元素,但我已经在 PyCharm 编辑器中尝试了所有其他find_element_by_方法。它们似乎都不起作用。XPath、类、选择器、名称等。

"C:UsersmperrPycharmProjectsSelenium ScriptsvenvScriptspython.exe" "C:/Users/mperr/PycharmProjects/Selenium Scripts/macAndCheeseBar.py"
Traceback (most recent call last):
File "C:/Users/mperr/PycharmProjects/Selenium Scripts/macAndCheeseBar.py", line 10, in <module>
user_input = driver.find_element_by_id("username")
File "C:UsersmperrPycharmProjectsSelenium Scriptsvenvlibsite-packagesseleniumwebdriverremotewebdriver.py", line 360, in find_element_by_id
return self.find_element(by=By.ID, value=id_)
File "C:UsersmperrPycharmProjectsSelenium Scriptsvenvlibsite-packagesseleniumwebdriverremotewebdriver.py", line 976, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "C:UsersmperrPycharmProjectsSelenium Scriptsvenvlibsite-packagesseleniumwebdriverremotewebdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:UsersmperrPycharmProjectsSelenium Scriptsvenvlibsite-packagesseleniumwebdriverremoteerrorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="username"]"}
(Session info: chrome=83.0.4103.61)

这是我的代码:

from selenium import webdriver
username = "myUsername"
password = "myPassword"
driver = webdriver.Chrome(r"C:UsersmperrDownloadschromedriver_win32chromedriver.exe")
driver.get("https://sso.godaddy.com/?realm=idp&path=%2Fproducts&app=account")
user_input = driver.find_element_by_id("username")
user_input.send_keys(username)
password_input = driver.find_element_by_id("password")
password_input.send_keys(password)
login_button = driver.find_element_by_id("submit Btn")
login_button.click()

这是 html:

<input id="username" type="username" aria-labelledby="label-username" aria-required="false" class="username-input ctHidden form-control" value="">
<input id="password" type="password" aria-labelledby="label-password" aria-required="false" class="ctHidden form-control" value="">
<button target="_parent" tabindex="0" class="btn btn-primary btn-purchase btn-block" id="submitBtn" type="button">Sign In</button>

我在这里嘟囔着什么吗?

您的代码没有等待页面完全加载。 我尝试了您的代码并进行了一些更改,这是我的代码,

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
username = 'your username'
password = 'your password'
driver =webdriver.Chrome(r"C:UsersmperrDownloadschromedriver_win32chromedriver.exe")
driver.get("https://sso.godaddy.com/")
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "username"))
)   #wait for page to load, so element with ID 'username' is visible
user_input = driver.find_element_by_id("username")
user_input.send_keys(username)
password_input = driver.find_element_by_id("password")
password_input.send_keys(password)
login_button = driver.find_element_by_id("submitBtn")
login_button.click()

你可以在这里阅读有关硒等待的文档。 你甚至可以使用python的时间模块进行等待。

最新更新