在定义Selenium Webdriver之前,明确定义下载目录,我们使用以下代码:
chromeOptions = webdriver.ChromeOptions()
prefs = {"download.default_directory" : "C:/data/cline"}
chromeOptions.add_experimental_option("prefs",prefs)
chromePath = "path to chromedriver"
driver = selenium.webdriver.chrome.webdriver.WebDriver(executable_path=chromePath, port=0, chrome_options=chromeOptions, service_args=None, desired_capabilities=None, service_log_path=None)
我想下载许多文件,每个文件都转到另一个(新创建的)目录。定义驱动程序后是否可以更改下载目录?
我无法弄清楚如何做到这一点并使用了工作。 以下解决方案不是移动您下载的文件。 supperimentswithCode在此处给出了答案。 下面是他解决方案的一部分
我只是尝试过这种方式在运行WebDriver期间更改下载文件夹:driver.command_executor._commands['send_command'] = (
'POST', '/session/$sessionId/chromium/send_command')
download_path = 'PATH/TO/MY/CURRENT/DESIRED'
params = {
'cmd': 'Page.setDownloadBehavior',
'params': { 'behavior': 'allow', 'downloadPath': download_path }
}
driver.execute("send_command", params)
或:
download_path = 'PATH/TO/MY/CURRENT/DESIRED'
params = { 'behavior': 'allow', 'downloadPath': download_path }
driver.execute_cdp_cmd('Page.setDownloadBehavior', params['params'])
它不会更改Chrome的默认下载位置设置,但会将文件保存到随后的下载中的新给定文件夹(如果不存在的话,将创建)。
可能的解决方案可以将符号链接设置为 下载默认目录 您可以将解决方案组合在python
中的符号链接和自定义下载目录的设置中(这可以取决于OS上下文,我使用的是Ubuntu 22.04)。DRIVER_PATH = '/usr/bin/chromedriver'
DEFAULT_DOWNLOAD_PATH = os.path.expanduser('~/Downloads')
DOWNLOAD_PATH = os.path.abspath('./Downloads')
def symlink(target, link_name, overwrite=False):
'''
Create a symbolic link named link_name pointing to target.
If link_name exists then FileExistsError is raised, unless overwrite=True.
When trying to overwrite a directory, IsADirectoryError is raised.
https://stackoverflow.com/questions/8299386/modifying-a-symlink-in-python/
'''
pass
### MAIN
if __name__ == '__main__':
service = Service(DRIVER_PATH)
options = webdriver.ChromeOptions()
prefs = {"download.default_directory": DOWNLOAD_PATH,
"savefile.default_directory": DOWNLOAD_PATH}
options.add_experimental_option("prefs", prefs)
browser = webdriver.Chrome(service=service, options=options)
os.mkdir('./t1')
symlink('./t1', DOWNLOAD_PATH, overwrite=True)
browser.get('https://archive.org/download/knotssplicesandr13510gut/13510.zip')
os.mkdir('./t2')
symlink('./t2', DOWNLOAD_PATH, overwrite=True)
browser.get('https://archive.org/download/knotssplicesandr13510gut/13510-h.zip')
driver.set_preference("download.default_directory", "path/")
trone这个变体