在特定时间后单击一个元素

Click an element after a particular time

我有一个包含 YouTube iframe 的网站。我想在视频结束后单击重播按钮。我切换到 youtube iframe 并找到了播放按钮。但是如何在特定时间段后(比如视频结束后)使用 selenium(python) 单击它。这里要点击的元素总是可用的,但我需要在特定时间后点击它。

driver.switch_to.frame(driver.find_element_by_xpath("//iframe[@id='YTPlayer']"))
driver.implicitly_wait(10000)
driver.find_element_by_css_selector(".ytp-play-button.ytp-button").click()

也尝试了显式等待,但条件不匹配。

隐式等待告诉 WebDriver 在尝试查找任何不立即可用的元素时轮询 DOM 一段时间。默认设置为 0。设置后,隐式等待设置为 WebDriver 对象的生命周期。

这可能不是您想要的,因为您的元素一直可用。

相反,您可以在代码中 运行 time.sleep()。

像这样:

driver.switch_to.frame(driver.find_element_by_xpath("//iframe[@id='YTPlayer']"))
time.sleep(1)
driver.find_element_by_css_selector(".ytp-play-button.ytp-button").click()

然而,您应该尝试找到需要满足的条件,然后点击按钮。

示例:

driver.switch_to.frame(driver.find_element_by_xpath("//iframe[@id='YTPlayer']"))
    while True:
      if your-condition:
        driver.find_element_by_css_selector(".ytp-play-button.ytp-button").click()
        break
      time.sleep(1)

您也可以按照此处所述使用显式等待:http://selenium-python.readthedocs.io/waits.html