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

Selenium中如何定位hover悬停后出现的内部元素并点击My Account

最优实现方案

推荐优先使用不依赖元素顺序、可维护性更高的定位方式,避免后续页面结构调整导致定位失效:

  1. 文本匹配定位(最稳定)
    不管是Selenium/Playwright/Cypress都支持通过元素文本直接定位,完全不需要依赖类名、父层级顺序:
    • Playwright 示例:
    page.getByRole('link', { name: 'My Account' }).click()
    
    • Selenium 示例:
    from selenium.webdriver.common.by import By
    driver.find_element(By.XPATH, '//a[text()="My Account"]').click()
    
  2. 限定父级的CSS选择器方案(适合类名稳定的场景)
    如果需要限定只在账户下拉容器内匹配,避免命中页面其他同名元素,可以加上父级类名约束,不需要先查全量元素数组再取索引:
    # Selenium 示例
    driver.find_element(By.CSS_SELECTOR, 'div.header-menu-dropdown.account-item a.header-menu-item.with-link:first-of-type').click()
    
    这个方案比你原有写法更稳定:它只会匹配账户下拉容器内的目标类链接,不会误选页面其他位置带相同类名的菜单元素。

原有方案的问题

你当前的写法没有限定父容器,一旦页面其他位置新增了带header-menu-item with-link类的元素,且排列顺序在My Account之前,就会定位到错误的元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:57:03