在特定时间后单击元素

时间:2017-08-22 23:48:54

标签: python selenium-webdriver youtube-iframe-api

我有一个有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()

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

1 个答案:

答案 0 :(得分:0)

隐式等待告诉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