某些网站会自动播放视频或放大图片。如何使用Selenium和Python来阻止它?
非常感谢。
答案 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。
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,安装和卸载扩展,更改设置,通过代码更改登录,因此无法获得逻辑程序中断等等这也比通过代码完成所有操作更快。