目标是在事件发生前使用 Selenium 更改 HTML 视频播放速率click。有几个线程讨论了该请求,例如OP1,并且有两个建议;Jeremy Visser在OP1中建议直接更改属性,如下document.querySelector('video').defaultPlaybackRate = 2.0;而手上的Armel则建议如下面的代码片段所示var vid = document.getElementById("video1");function fastPlaySpeed() { vid.playbackRate = 2;}正如Greg所建议的, Armel的方法可以模拟如下,from selenium import webdriverfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support import expected_conditions as ECchrome_options = webdriver.ChromeOptions()browser = webdriver.Chrome(executable_path=r"\Browsers\chromedriver.exe", options=chrome_options)browser.get("https://www.youtube.com/watch?v=nXbfZL5kttM")WebDriverWait(browser, 70).until(EC.element_to_be_clickable( (By.XPATH, "//button[@aria-label='Play']"))).click()print('Complete play')javascript_to_execute = 'document.getElementById("video1").playbackRate = 2'webdriver.execute_script(javascript_to_execute))然而,YouTube 似乎对ElementById不同的视频有不同的规定,因此使该js方法无法按预期工作。显然 YouTube 有特定的功能:player.setPlaybackRate(suggestedRate:Number):Void做到这一点。此函数设置当前视频iFrame API的建议播放速率 。但是,我对如何集成setPlaybackRate(suggestedRate:Number)到我的代码片段中没有足够的知识。如果有人能够阐明如何setPlaybackRate在这种特殊情况下使用它,我将不胜感激。预先感谢您抽出宝贵时间接受此请求。
1 回答
牧羊人nacy
TA贡献1862条经验 获得超7个赞
在 Web 驱动程序对象上调用execute_script:
javascript_to_execute = 'document.getElementById("video1").playbackRate = 2'
webdriver.execute_script(javascript_to_execute))
- 1 回答
- 0 关注
- 99 浏览
添加回答
举报
0/150
提交
取消