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

使用Selenium Python在OrangeHRM依次hover多元素后点击报错如何解决

报错原因

AttributeError: move_to requires a WebElement 报错的核心是你传入move_to_element方法的参数不是单个WebElement对象:
你使用的find_elements_by_xpath是复数形式,返回的是匹配到的所有元素组成的列表,直接把列表传入方法自然不符合参数要求。

修正方案

你需要把三处复数定位的find_elements_by_xpath改成单数形式find_element_by_xpath,同时建议补充路径转义、兼容高版本Selenium的写法优化,修正后的代码如下:

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
import time

# 路径前加r避免反斜杠转义问题
driver=webdriver.Chrome(executable_path=r"D:\ChromeDriverExtracted\chromedriver")
driver.get("https://opensource-demo.orangehrmlive.com/")
driver.maximize_window()
time.sleep(2)

# 统一用Selenium 4+推荐的By写法,兼容后续版本
driver.find_element(By.ID, "txtUsername").send_keys("Admin")
driver.find_element(By.ID, "txtPassword").send_keys("admin123")
driver.find_element(By.ID, "btnLogin").click()
time.sleep(1)

# 改成单数find_element获取单个元素对象
admin=driver.find_element(By.XPATH, "//*[@id='menu_admin_viewAdminModule']/b")
userManagment=driver.find_element(By.XPATH, "//*[@id='menu_admin_UserManagement']")
users=driver.find_element(By.XPATH, "//*[@id='menu_admin_viewSystemUsers']")

actions=ActionChains(driver)
actions.move_to_element(admin).move_to_element(userManagment).move_to_element(users).click().perform()

补充注意事项

  • 如果运行后仍有元素找不到的问题,可以适当增加time.sleep的时长,或者换成显式等待逻辑,避免页面未加载完成就执行定位的问题。
  • Selenium 4.6+ 已经内置了Selenium Manager,可以自动匹配对应版本的chromedriver,不需要手动指定executable_path路径,如果你升级到对应版本可以去掉该参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:06:10