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

使用Selenium登录OrangeHRM网站遇NoSuchElementException问题求助

解决Selenium无法定位OrangeHRM登录元素的问题

问题原因

你的代码在页面尚未完全加载完成时就尝试定位元素,导致Selenium找不到username输入框。浏览器加载动态页面需要一定时间,直接调用find_element会因为元素还未渲染到DOM中而报错。

解决方案

使用显式等待等待元素加载完成,这是处理动态页面元素定位的可靠方式。同时优化路径写法避免转义问题,直接访问登录页URL更稳定。

修改后的代码如下:

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

# 用原始字符串避免Windows路径转义问题
s = Service(r"C:\Development\chromedriver.exe")
driver = webdriver.Chrome(service=s)

# 直接访问登录页URL,避免重定向可能带来的延迟
driver.get("https://opensource-demo.orangehrmlive.com/web/index.php/auth/login")

# 显式等待:最长等待10秒,直到username元素出现在DOM中
wait = WebDriverWait(driver, 10)
username = wait.until(EC.presence_of_element_located((By.NAME, "username")))

username.send_keys("Admin")

额外排查点

如果问题仍存在,可检查以下内容:

  • Chrome浏览器版本与ChromeDriver版本是否匹配(驱动需对应浏览器大版本)
  • 通过浏览器F12开发者工具,确认页面中确实存在name="username"的元素
  • 页面是否存在iframe嵌套(OrangeHRM登录页无此情况,可直接排除)

内容的提问来源于stack exchange,提问作者Sravanthi Veera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:45:20