我正在使用 Selenium 撰寫 python 腳本來搜索和播放 YouTube 視頻。
這是我的代碼:
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Defining video name
video_name = "4k art"
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.maximize_window()
wait = WebDriverWait(driver, 3)
presence = EC.presence_of_element_located
visible = EC.visibility_of_element_located
# Navigate to url with video being appended to search_query
driver.get('https://www.youtube.com/results?search_query={}'.format(str(video_name)))
# play the video
wait.until(visible((By.ID, "video-title")))
driver.find_element(By.ID, "video-title").click()
# Wait for video to end
所以,一切正常,但我想知道讓腳本等到視頻完成后再完成的最佳方法是什么?我看到了使用 YouTube API 或使用帶有元素的 Selenium 執行此操作的不同方法。有沒有首選的方法來做到這一點?
uj5u.com熱心網友回復:
您可以查找重播按鈕,如果出現則退出回圈
wait=WebDriverWait(driver,10)
While True:
try:
wait.until(EC.element_to_be_clickable((By.XPATH,"//button[@aria-label='Replay']")))
break
except:
pass
進口:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
uj5u.com熱心網友回復:
這取決于您要測驗的功能。
如果您不關心實際的 GUI 演示,而只想獲得視頻已完成的指示,并且您可以使用一些 API 來完成 - 使用 API 來完成。這是一種更加快速和穩定的方法。
如果您需要測驗在 GUI 上完成的實際視頻 - 您應該使用 Selenium 等待適當的 Web 元素。在這種情況下,您可以使用 Arundeep 給出的解決方案
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/398808.html
