python - 在 selenium python 中找到一个 a 元素并单击它

标签 python selenium selenium-webdriver

我有这个页面,我想单击发送电子邮件的 a 元素(下面的屏幕截图中突出显示的元素 enter image description here

我尝试使用 By.XPATH 找到这个元素 email = driver.find_element(By.XPATH, "//a[contains(@class, 'email-old-32')]").click()

和By.CLASS_NAME

email = driver.find_element(By.CLASS_NAME, 'email-old-32').click()

在这两种情况下我都会收到错误 no such element,有谁知道我做错了什么?

最佳答案

有几种可能的情况可能导致此问题:

  1. 您需要等待元素加载并变得可点击。 WebDriverWait expected_conditions 可用于此目的。
    如果这是您的情况,而不是 email = driver.find_element(By.XPATH, "//a[contains(@class, 'email-old-32')]").click() 尝试这个:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 20)

wait.until(EC.element_to_be_clickable((By.XPATH, "//a[contains(@class, 'email-old-32')]"))).click()
  • 元素类属性值可以是动态的。确保它没有改变。如果确实如此,您需要为该元素找到另一个稳定的定位器。
  • 该元素可以位于 iframe 内。在这种情况下,您需要切换到 iframe
  • 可能您打开了一个显示目标元素的新标签页,但忘记切换到新标签页。
  • 关于python - 在 selenium python 中找到一个 a 元素并单击它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74180393/

    相关文章:

    java - 如何通过selenium Java API读取DOM对象的属性?

    python - 使用 splitter 写入 html body

    java - 如何使用selenium获取日期字段的值?

    python - 如何划分字典值?

    python - 我怎样才能让我的 gradle 测试任务对不在 maven central 上的库使用 python pip install?

    python - 单击 Selenium Python 中 div 下拉列表中的标签,没有任何效果

    python - 网络驱动程序错误 : "No alert is present" after UnexpectedAlertPresentException is thrown

    python - 使用 Amazon BrowseNodes API 做一些有意义的事情

    python - 如何在 Python 的 Celery 应用程序中测试重试?

    python - 比较两个不同大小的数组 - python numpy