当前位置 > 谷歌浏览器> 正文

selenium 修改 chromeOption 参数实现下载前询问每个文件的保存位置

2024-11-12 10:04:25 谷歌浏览器 / chrome-options / selenium / js / json / settings /

咱们有时候对浏览器那些功能,要么觉得挺惊喜,要么就是有点不爽。比如说,浏览器启动的时候,能设置个属性,虽然看起来挺普通,但其实挺有用的。好多浏览器都有这么个设置,不过在实际用起来谷歌浏览器下载的文件路径,比如改改文件下载的路径,这些地方就挺多值得咱们好好琢磨的。

启动属性与下载路径关联

from selenium import webdriver
import time
def set_chrome_pref():
    chromeOptions = webdriver.ChromeOptions()
    prefs = {"download.default_directory":"D:\\"}
    chromeOptions.add_experimental_option("prefs", prefs)
    driver = webdriver.Chrome(chrome_options=chromeOptions)

用浏览器上网时,那个启动就改文件下载路子的功能挺有个性的。比如,咱们平时用的浏览器,一登录到某些网站,就能看到(来源:)然后就能改路径。但这对咱们用户来说,有时候挺不方便的。我身边好多朋友都遇到过这种情况,比如下载工作资料或者学习资料时,都希望能按自己的意愿给文件命名,选下载的地方,这时候就特别需要简便的操作。不同浏览器在这方面的设计,其实都差不多,都想着既满足基本需求,又能照顾到用户个性化需求,但好像都没做到最好。

咱们得想想怎么更高效地运用这些特性。说真的,咱们在操作上完全可以拓宽思路,不能只盯着浏览器那几个明面上的功能。就拿下载位置来说,有些浏览器看起来没提供深度设置选项,但其实仔细研究,还是有挺多操作空间的。

手动F12找按钮js的尝试

我自己试着找方法来设定文件下载的理想路径,首先就想到的是按F12。这个操作对那些懂浏览器开发的人来说很常见,但对一般用户来说可能就挺陌生的。我记得当时我在浏览器里按了F12,然后努力去找那个下载位置选择的js代码,或者对应的值。这可真不是件容易的事,我花了好多时间去检查各种元素。回想起来,我在办公室那台老电脑上操作的时候,网络还不太顺畅,我一点一点地找,最后还真让我找到了。

找到相关元素后,得动手操作了。得打开那个特定的地址,那可是关键的设置地址。在那儿执行js脚本,就能操控那个我们想要的开关——就是下载前询问文件保存位置的那个功能对应的开关。要是这个值是true,那功能就跟开了似的,每次下载前都得问保存哪儿;要是false,那就不问了。这整个过程就像是在破解一道复杂的谜题,解开后那种成就感,那可是挺明显的。

每次检查执行js的问题

document.getElementsByTagName('settings-ui')[0].shadowRoot.getElementById('container').children[1].shadowRoot.children[11].shadowRoot.getElementById('advancedPage').children[4].children[0].shadowRoot.getElementById('pages').children[0].children[1].shadowRoot.getElementById('outerRow').children[3].checked

执行JS确实能搞定开关的开关问题,但这事挺麻烦的。每次都得检查,这实际上挺费时间的。对那些喜欢快速下载的用户来说,这可能会打乱他们的节奏。而且,还得确保JS的正确性,万一不小心改错了代码,整个功能都可能失效。我之前就遇到过这种情况,以为只改一个数值就能达到另一种效果,结果弄到最后,功能直接不能用。那时候还得重新来过,查找和修正问题,那可真是个费劲的过程。

而且,不同版本的浏览器对JS的执行要求可能各不相同。在低版本浏览器上能正常运行的代码,到了高版本浏览器可能就不灵光了。我有个同学就碰到了这样的问题。他用自己的老笔记本,用低版本的浏览器把设置搞定了。结果换到新电脑,新电脑上装的是高版本的浏览器,之前的设置就失效了。

从配置文件解决问题

document.getElementsByTagName('settings-ui')[0].shadowRoot.getElementById('container').children[1].shadowRoot.children[11].shadowRoot.getElementById('advancedPage').children[4].children[0].shadowRoot.getElementById('pages').children[0].children[1].shadowRoot.getElementById('outerRow').children[3].click()

后来我又找到了一个新招儿,就是在浏览器的配置文件里找到那个对应的设置。这招的好处是,浏览器一启动就能直接加上参数,把问题给解决了。配置文件放在C:\Users\\\Local\\\UserData\\这地方,没扩展名,里面是个超长的json文件。我打开它格式化了一下,发现里面有个明确的设置项,这个项就能控制我们想要的那个开关。这可比每次都运行js方便多了。

配置文件的操作可真不是随便就能玩的,一不小心就可能搞砸整个文件,那浏览器可就别想正常运行了。我记得有一次,我就在调整里面的一个参数,结果不小心多删了一个字符,那浏览器直接就出了各种怪问题,最后只能重新卸载再安装才能恢复正常。

启动时增加扩展属性

启动时加个扩展属性,这招挺高明的。它能从根本上调整文件下载的流程。就拿之前那个让人不爽的下载位置和文件名设置来说,用对扩展属性就能改掉那个按钮,达到下载前能询问每个文件的保存位置,还能随意命名和定位的目的。这就像找到了一把钥匙,打开了通往更佳用户体验的大门。

增加扩展属性可不是那么容易的事。你得懂浏览器底层的运作,这对一般用户来说挺难的。而且,不同的浏览器在添加和运用扩展属性上可能各有门道,你得好好研究相关文档,或者干脆找专业人士帮忙。

不同浏览器的通用与差异

其实,不同的浏览器在功能和设置上还是有共通点的,毕竟,都是为了给咱们用户创造更好的上网体验。像下载路径的设置,很多浏览器都差不多,还有对js执行和配置文件的操作,都挺方便的。不过,它们之间也有挺大区别的。你看,从界面布局到功能实现的代码逻辑,都不太一样。比如有的浏览器设置下载路径那界面简洁明了,操作简单,但在扩展属性支持上可能就差点劲。有的浏览器虽然界面看起来复杂,但在深度代码修改和功能定制上,用户就能有更多发挥空间。

这时候咱们得琢磨个事:对咱们这些普通用户来说,浏览器厂商是不是应该把这些复杂的设置流程给简化了谷歌浏览器下载的文件路径,好让大家操作起来更方便?大家可以去评论区聊聊这个话题,顺便点个赞,转发一下这篇文章也行。

版权保护: 本文由 浏览器之家-浏览器下载,浏览器插件,浏览器教程 原创,转载请保留链接: /gugelanqi/10109.html

猜你喜欢