如何单击使用Python嵌入的youtube视频的播放按钮

如何单击使用Python嵌入的youtube视频的播放按钮,python,python-3.x,selenium,youtube-api,Python,Python 3.x,Selenium,Youtube Api,我试图让Python播放一个嵌入在网站()中的视频。 我试着使用ID、xpath等,但没有奏效。 这里有一个与我类似的问题(),但我不知道如何应用代码。 如果你能帮我提供代码,我会非常高兴的。 谢谢这应该行得通 driver = webdriver.Firefox() driver.get('https://harsh10822.wixsite.com/intro') time.sleep(5) video = driver.find_element_by_id('video-player-co

我试图让Python播放一个嵌入在网站()中的视频。 我试着使用ID、xpath等,但没有奏效。 这里有一个与我类似的问题(),但我不知道如何应用代码。 如果你能帮我提供代码,我会非常高兴的。 谢谢

这应该行得通

driver = webdriver.Firefox()
driver.get('https://harsh10822.wixsite.com/intro')
time.sleep(5)
video = driver.find_element_by_id('video-player-comp-ka1067od')
video.click()
在这种情况下,等待是很重要的,因为嵌入式视频不会随页面立即加载,所以selenium需要等待。您可以将5秒更改为适合您的任何数字。

请参阅:

但是,这使用了一种稍有不同的技术,而不是
WebDriverWait
或睡眠固定的秒数,如果睡眠时间超过必要时间,这可能是浪费

相反,使用调用
驱动程序。隐式等待(10)
。然后,任何试图定位元素的调用都会在超时之前隐式等待元素出现,等待时间最长可达10秒,但不会超过必要的时间。这只是一个知道要查找哪些元素以及在哪里查找的问题:

driver = webdriver.Firefox()

driver.implicitly_wait(10) # wait for up to 10 seconds before timeout for any find operation

driver.get('https://harsh10822.wixsite.com/intro')
driver.switch_to.frame(driver.find_element_by_xpath('//iframe[starts-with(@src, "https://www.youtube.com/embed")]')) # switch to iframe
button = driver.find_element_by_xpath('//button[@aria-label="Play"]') # look for button
button.click()

确保特定的web驱动程序已下载并放置在保存代码的目录中。作为参考,您可以参考Tim selenium技术教程

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
video=input()
driver=webdriver.Chrome()
driver.get("https://youtube.com")
search=driver.find_element_by_id("search")
time.sleep(2)
search.send_keys(video,Keys.RETURN)
time.sleep(2)
play=driver.find_element_by_id("video-title")
play.send_keys(Keys.RETURN)

或者您可以发出一个
驱动程序。在驱动程序初始化后立即隐式地等待(5)
,不要发出调用
sleep
,然后调用
find\u element\u by\u id
应该等待5秒钟,然后超时。但是,如果元素在5秒之前出现,您将不会不必要地等待额外的时间。因此,你最好将秒数设置为任意大。这将是理想的,但在这种情况下,页面在播放视频之前完成加载。换言之,页面先加载,页面加载完成后加载视频。因此,我能看到的唯一解决方案是使用
time.sleep()
方法。我不相信单击该id有效。这是一个等待加载正确元素的问题。我发布的代码很有效,但如果你有其他想法,我很乐意看到。我应该说我第二次尝试了你的答案,它确实有效,所以我投了更高的票,