Cha*_*han 0 javascript python selenium
某些网站会自动播放视频或放大图像。如何使用Selenium和Python停止它?
非常感谢你。
这实际上取决于情况,因为您的问题过于笼统,所以我假设有两种情况:
1)您正在谈论标签的autoplay属性video。设置autoplay为false仍然无法播放某些视频。看到这种情况摆弄。
一种确定的方法是注入一个脚本来停止所有视频,如下所示:
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()}')
Run Code Online (Sandbox Code Playgroud)
另外,由于视频已停止,因此您可能想添加控件(播放,酒吧等),以防它们稍后启动,在这种情况下,JavaScript位如下所示:
videos = document.querySelectorAll("video"); for(video of videos) {video.pause(); video.controls = true}
Run Code Online (Sandbox Code Playgroud)
如果video标记位于影子根元素中,则上述情况将不起作用,但是几乎没有任何常规解决方案可以起作用。在那里,您将需要自定义方法。
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")
Run Code Online (Sandbox Code Playgroud)
您可以在此处进行检查人机交互的登录名,或更改设置(例如:禁用自动播放),然后每次使用该文件夹启动Webdriver时都需要我现在需要的cookie。您也可以手动安装扩展,并在每个会话中使用它们。在我运行的第二个时间里,所有的cookie都在那里:
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
Run Code Online (Sandbox Code Playgroud)
优点是您可以使用具有不同设置和Cookie的多个文件夹,无需加载,卸载Cookie,安装和卸载扩展程序,更改设置,通过代码更改登录名的扩展程序,因此无法中断程序的逻辑,等等这比通过代码完成所有操作要快。
| 归档时间: |
|
| 查看次数: |
1500 次 |
| 最近记录: |