如何使用Selenium启动网站时禁用自动播放

时间:2018-02-08 10:59:06

标签: javascript python selenium

某些网站会自动播放视频或放大图片。如何使用Selenium和Python来阻止它?

非常感谢。

1 个答案:

答案 0 :(得分:6)

这实际上取决于案例,因为你的问题太笼统,我假设有两种情况:

1)您正在谈论autoplay标记的video属性。 将autoplay设置为false无助于某些视频播放。见this case in fiddle.

一种可靠的方法是注入一个停止所有视频的脚本,如下所示:

import selenium
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("user-data-dir=other")
driver = webdriver.Chrome(chrome_options=chrome_options)
#driver.get("https://blog.synq.fm/html5-video-looping-autoplay-on-ios-and-android#gist48620519")
driver.get('https://www.facebook.com/LaneigeHongKong/posts/1542227299146098%22')
sleep(5)
driver.execute_script('videos = document.querySelectorAll("video"); for(video of videos) {video.pause()}')

另外因为视频已停止,你可能想要添加控件(播放,栏等),以防你想要启动它们,在这种情况下,JavaScript位是这样的:

videos = document.querySelectorAll("video"); for(video of videos) {video.pause(); video.controls = true}

如果video标记位于影子根元素中,则上述情况不起作用,但几乎没有任何通用解决方案可行。那里你需要一个自定义的aproache。

2)你一般都在谈论自动播放,遗憾的是这里没有通用的解决方案,一种方法是在你需要的网站上保存设置,我使用Chrome选项user-data-dir以便使用文件夹作为配置文件,我运行:

chrome_options = Options()
chrome_options.add_argument("user-data-dir=selenium") 
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com")

你可以在这里执行检查人工交互或更改设置的登录(例如:禁用自动播放)我这样做,然后每次我启动带有该文件夹的Webdriver时我需要的cookie一切都在那里。您也可以手动安装扩展程序并在每个会话中使用它们。 Secon我跑的时间,所有的饼干都在那里:

chrome_options = Options()
chrome_options.add_argument("user-data-dir=selenium") 
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com") #Now you can see  the cookies, the settings, Extensions and the logins done in the previous session are present here

优点是你可以使用具有不同设置和cookie的多个文件夹,不需要加载扩展,卸载cookie,安装和卸载扩展,更改设置,通过代码更改登录,因此无法获得逻辑程序中断等等这也比通过代码完成所有操作更快。