如何使用 Python 准时关闭浏览器(ChromeDriver)

How to close browser(ChromeDriver) on time using Python

我制作了一个 Python 程序,它使用 Selenium 打开我的 Youtube 播放列表,我想在观看完所有视频后关闭该浏览器。 (我尝试使用 time.sleep(),但问题是 Youtube 广告)。 那么,有什么方法可以让我在观看完所有视频后自动关闭浏览器吗?

视频完成后 //div[@class='ytp-autonav-endscreen-button-container'] 元素出现,因此您可以等到该元素出现,然后关闭驱动程序。
您也可以简单地通过 class 名称 'ytp-autonav-endscreen-button-container' 或其中的其他按钮/元素找到它。
所以看完视频后使用

WebDriverWait(driver, delay).until(EC.visibility_of_element_located((By.ID, 'ytp-autonav-endscreen-button-container')))

其中 delay 是足以让视频完成的时间。
详细了解 webdriver 显式等待条件 here

不要忘记添加必要的导入

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

我建议分步进行。

第一步:

等待播放列表中的最后一个视频:

通过文字:

last_video = driver.find_element_by_css_selector("#secondary .index-message.style-scope.ytd-playlist-panel-renderer:nth-child(1)").text == "10 /10"

或者直接等待播放列表中的最后一个元素:

last_video = driver.find_element_by_css_selector("#secondary #items>.style-scope.ytd-playlist-panel-renderer:last-of-type").get_attribute("selected")

第二步:

第一个条件为真后,等待此视频播放完毕,使用此定位器(重播 按钮)

video_ends = driver.find_element_by_css_selector(".ytp-chrome-controls button[title=Replay]")

为此,您需要导入:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

并像这样使用它:

wait = WebDriverWait(driver, timeout_in_seconds)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#secondary .index-message.style-scope.ytd-playlist-panel-renderer:nth-child(1)").text == "10 /10")))

超时将取决于播放列表的长度。

这不是一个快速的任务,没有人会同意在这里为你完成它。