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

使用Selenium登录网站遇元素定位失败问题求助

解决Selenium登录OrangeHRM找不到元素的问题

错误核心原因

报错提示无法定位[name="txtUsername"]元素,主要来自两点:

  1. 页面元素未完全加载就执行定位操作,导致代码"提前"查找还未出现的元素
  2. 当前OrangeHRM演示站的元素属性已变更,用户名输入框的name属性不再是txtUsername,而是username

具体解决步骤

  • 修正元素定位符:
    登录页当前的用户名输入框name为username,密码输入框name为password,需同步更新代码中的定位参数。
  • 启用显式等待机制:
    创建WebDriverWait对象后,必须通过until方法等待元素处于可交互状态,避免页面加载延迟引发的定位失败。
  • 补充登录操作:原代码缺少点击登录按钮的步骤,需补充以完成完整登录流程。

修改后的完整代码

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

# 初始化驱动
s = Service("C:\\Program Files\\Google\\Chrome\\Application\\chromedriver.exe")
driver = webdriver.Chrome(service=s)
driver.maximize_window()
driver.get("https://opensource-demo.orangehrmlive.com")

# 显式等待元素可交互后再操作
wait = WebDriverWait(driver, 10)
# 输入用户名
username_input = wait.until(EC.element_to_be_clickable((By.NAME, "username")))
username_input.send_keys("Admin")
# 输入密码
password_input = wait.until(EC.element_to_be_clickable((By.NAME, "password")))
password_input.send_keys("admin123")
# 点击登录按钮
login_btn = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@type='submit']")))
login_btn.click()

# 业务操作完成后再退出
# driver.quit()

额外注意事项

  • 确保ChromeDriver版本与本地Chrome浏览器版本完全匹配,版本不兼容会引发各类异常
  • 若仍出现定位问题,可通过浏览器开发者工具(F12)重新核对元素属性,保证定位符的准确性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:01:00