简介
selenium启动chrome时有个options可以设置chrome的属性。其实其他浏览器也有。
selenium启动时修改文件下载路径:(来自:https://www.cnblogs.com/linwenbin/p/10361986.html) 跳转
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)
需求
这样确实能修改文件下载路径,但是我下载的时候,更希望直接命名我的文件名和下载位置,所以就需要打开一个开关:下载前询问每个文件的保存位置 (如下图)
解决方案1
首先,我想到的就是F12,然后找到该按钮的js,或者其值,如果没有打开,就去打开。
真别说,让我找到了。
打开chrome,chrome://settings,这个地址就是设置地址。然后执行以下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
其值为true,就是打开了。为false,就是关闭了。
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()
这个就是点击按钮的js了,其实跟查询状态的元素时一个,只不过,一个是 .checked,一个是 .click()
解决方案2
执行js虽说行,每次还有检查,势必会浪费时间。从chrome的一个配置文件里,找到了chrome的设置项,这个就可以在selenium开启chrome时直接加上参数。
文件地址:C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default\Preferences
文件没有扩展名。其内容就是一个json,格式化后如下:
内容很长,截图不全。其中有一个项,决定了开关。如下图:
selenium启动chrome时,增加扩展属性。可以改变这个按钮。具体代码如下:
from selenium.webdriver.chrome.webdriver import WebDriver as WebDriver_chrome
from selenium.webdriver.chrome.options import Options as Options_chrome
prefs = {"download.prompt_for_download": True}
options = Options_chrome()
options.add_experimental_option("prefs", prefs)
web_driver = WebDriver_chrome(executable_path="chromedriver.exe", chrome_options=options)
web_driver.maximize_window()