在 python 中无法使用 selenium 和 chromedriver 按 id 找到元素
cant find element by id with selenium and chromedriver in python
我一直收到这个错误。
我正在尝试登录我的 godaddy 帐户,以便每天使用新文本自动更新我的网站。它一直说它无法通过 id 找到元素,但我已经在 PyCharm 编辑器中尝试了所有其他 find_element_by_
方法。 None 其中似乎有效。 XPath、class、选择器、名称等
"C:\Users\mperr\PycharmProjects\Selenium Scripts\venv\Scripts\python.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:\Users\mperr\PycharmProjects\Selenium Scripts\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 360, in find_element_by_id
return self.find_element(by=By.ID, value=id_)
File "C:\Users\mperr\PycharmProjects\Selenium Scripts\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "C:\Users\mperr\PycharmProjects\Selenium Scripts\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\mperr\PycharmProjects\Selenium Scripts\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.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:\Users\mperr\Downloads\chromedriver_win32\chromedriver.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:\Users\mperr\Downloads\chromedriver_win32\chromedriver.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()
您可以阅读有关 selenium 等待的文档 here。
您甚至可以使用 python 的时间模块等待
我一直收到这个错误。
我正在尝试登录我的 godaddy 帐户,以便每天使用新文本自动更新我的网站。它一直说它无法通过 id 找到元素,但我已经在 PyCharm 编辑器中尝试了所有其他 find_element_by_
方法。 None 其中似乎有效。 XPath、class、选择器、名称等
"C:\Users\mperr\PycharmProjects\Selenium Scripts\venv\Scripts\python.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:\Users\mperr\PycharmProjects\Selenium Scripts\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 360, in find_element_by_id
return self.find_element(by=By.ID, value=id_)
File "C:\Users\mperr\PycharmProjects\Selenium Scripts\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "C:\Users\mperr\PycharmProjects\Selenium Scripts\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\mperr\PycharmProjects\Selenium Scripts\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.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:\Users\mperr\Downloads\chromedriver_win32\chromedriver.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:\Users\mperr\Downloads\chromedriver_win32\chromedriver.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()
您可以阅读有关 selenium 等待的文档 here。 您甚至可以使用 python 的时间模块等待