如何使用selenium使Chrome WebDriver中的所有声音静音

我想编写一个脚本,在其中使用如下的selenium包:

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("https://www.youtube.com/watch?v=hdw1uKiTI5c")

现在,在获得所需的URL之后,我想使镶边声音静音。我该怎么办?像这样的东西:

driver.mute()

其他任何Webdriver都有可能吗?像Firefox或…?

回答:

不确定是否可以在打开页面后(通常在任何页面上都可以这样做),但是可以通过设置--mute-

audio切换器来在浏览器会话的整个过程中将所有声音静音:

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()

chrome_options.add_argument("--mute-audio")

driver = webdriver.Chrome(chrome_options=chrome_options)

driver.get("https://www.youtube.com/watch?v=hdw1uKiTI5c")


或者,您可以直接将HTML5视频播放器静音:

video = driver.find_element_by_css_selector("video")

driver.execute_script("arguments[0].muted = true;", video)

您可能需要先添加一些延迟,然后才能将视频初始化为静音。time.sleep()这样做不是最好的方法-

更好的方法是订阅loadstart媒体事件-可以在此处找到Python实现。

总结-完整的实现:

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium import webdriver

driver = webdriver.Chrome()

driver.set_script_timeout(10)

driver.get("https://www.youtube.com/watch?v=hdw1uKiTI5c")

# wait for video tag to show up

wait = WebDriverWait(driver, 5)

video = wait.until(EC.visibility_of_element_located((By.TAG_NAME, 'video')))

# wait for video to be initialized

driver.execute_async_script("""

var video = arguments[0],

callback = arguments[arguments.length - 1];

video.addEventListener('loadstart', listener);

function listener() {

callback();

};

""", video)

# mute the video

driver.execute_script("arguments[0].muted = true;", video)

以上是 如何使用selenium使Chrome WebDriver中的所有声音静音 的全部内容, 来源链接: utcz.com/qa/428927.html

回到顶部