我有这个页面,我想单击发送电子邮件的 a 元素(下面的屏幕截图中突出显示的元素
我尝试使用 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,有谁知道我做错了什么?
最佳答案
有几种可能的情况可能导致此问题:
- 您需要等待元素加载并变得可点击。
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/