You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium NoSuchElementException求助:无法定位username元素

解决Selenium无法定位OrangeHRM用户名输入框的问题

错误信息

Traceback (most recent call last):
File "C:\Users\Moga Road Carrier\PycharmProjects\pythonProject\day1\firstTestCase.py", line 9, in <module>
term = driver.find_element(By.NAME, "username")
#            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Moga Road Carrier\PycharmProjects\pythonProject\venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 861, in find_element
return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"]
#            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Moga Road Carrier\PycharmProjects\pythonProject\venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 444, in execute
self.error_handler.check_response(response)
File "C:\Users\Moga Road Carrier\PycharmProjects\pythonProject\venv\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 249, 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":"[name="username"]"}
#   (Session info: chrome=109.0.5414.75)
Stacktrace:
Backtrace:
#   (No symbol) [0x0107F243]
#   (No symbol) [0x01007FD1]
#   (No symbol) [0x00EFD04D]
#   (No symbol) [0x00F2C0B0]
#   (No symbol) [0x00F2C22B]
#   (No symbol) [0x00F5E612]
#   (No symbol) [0x00F485D4]
#   (No symbol) [0x00F5C9EB]
#   (No symbol) [0x00F48386]
#   (No symbol) [0x00F2163C]
#   (No symbol) [0x00F2269D]
GetHandleVerifier [0x01319A22+2655074]
GetHandleVerifier [0x0130CA24+2601828]
GetHandleVerifier [0x01128C0A+619850]
GetHandleVerifier [0x01127830+614768]
#   (No symbol) [0x010105FC]
#   (No symbol) [0x01015968]
#   (No symbol) [0x01015A55]
#   (No symbol) [0x0102051B]
BaseThreadInitThunk [0x75EAFA29+25]
RtlGetAppContainerNamedObjectPath [0x776A7B5E+286]
RtlGetAppContainerNamedObjectPath [0x776A7B2E+238]

原代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
serv_obj = Service("C:\\Drivers\\chromedriver_win32\\chromedriver.exe")
driver = webdriver.Chrome(service=serv_obj)
driver.get('https://opensource-demo.orangehrmlive.com/')

driver.maximize_window()
term = driver.find_element(By.NAME, "username")
term.clear()
term.send_keys("Admin")

问题原因

代码执行速度快于页面加载速度,调用driver.find_element时,用户名输入框还未完成渲染,导致无法定位元素。

解决方法

使用Selenium的显式等待,等待元素可交互后再执行操作,确保元素已完全加载。

修改后的代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

serv_obj = Service("C:\\Drivers\\chromedriver_win32\\chromedriver.exe")
driver = webdriver.Chrome(service=serv_obj)
driver.get('https://opensource-demo.orangehrmlive.com/')

driver.maximize_window()
# 等待最多10秒,直到用户名输入框可交互
term = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.NAME, "username"))
)
term.clear()
term.send_keys("Admin")

额外检查项

  • 确认ChromeDriver版本与Chrome浏览器版本匹配(当前Chrome版本为109.0.5414.75,需下载对应版本的ChromeDriver)
  • 检查页面是否有弹窗、广告遮挡元素,若有需先处理弹窗

内容的提问来源于stack exchange,提问作者Narinder Garg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:31:13