Selenium Python-等待元素加载并单击它

时间:2019-05-31 11:02:57

标签: python selenium xpath css-selectors webdriverwait

我一直在试图弄清楚如何等待元素被加载,然后在python中执行click函数。

我正在谈论的网站是:https://tempail.com/

收到电子邮件后,我希望脚本单击它,然后执行其他任务。

我试图通过“ Try / Except Function”解决此问题,但是我总是收到错误消息。

网站来源: https://i.imgur.com/xMrJg5J.png

问题是该网站使用了我在find_element_by函数中无法使用的生成的ID。

这是我到目前为止尝试过的: https://i.imgur.com/zxGMVpf.png

尝试一下,我希望脚本等待该站点收到邮件。邮件进入收件箱后,应单击链接/邮件并将其打开。

除此之外,我一直在寻找更多解决方案,但并没有真正的帮助,但是使用此代码,我始终会收到以下错误:

Message: no such element: Unable to locate element: {"method":"css selector","selector":".epostalar ul li.mail a"}

此外,它甚至不需要等待邮件。

2 个答案:

答案 0 :(得分:0)

If you would like to click TEMPAIL link use WebdriverWait and element_to_be_clickable

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://tempail.com/")
WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.XPATH,"//a[contains(@href,'https://tempail.com/')]"))).click()

答案 1 :(得分:0)

收到电子邮件后,要在其上调用string,必须诱使 WebDriverWait 使元素可点击,并且您可以使用以下Locator Strategies之一:

  • 使用click()

    CSS_SELECTOR
  • 使用WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "ul.mailler li.mail a"))).click()

    XPATH