所以我尝试将多个excel链接下载到不同的文件路径,具体取决于使用Selenium的链接。
我可以设置FirefoxProfile来下载指向单个路径的所有链接,但是当我尝试将不同的文件下载到不同的文件路径时,我无法动态更改路径。有人有解决方法吗?
self.fp = webdriver.FirefoxProfile() self.ft.set_preferences(“browser.download.folderList”,2) self.ft.set_preferences(“browser.download.showWhenStarting”,2) self.ft.set_preferences(“browser.download.dir”,“C:\ SOURCE FILES \ BACKHAUL”) self.ft.set_preferences(“browser.helperApps.neverAsk.saveToDisk”,(“application / vnd.ms-excel))
self.driver = webdriver.Firefox(firefox_profile = self.fp)
此代码将设置我想要的路径一次。但我希望能够在运行一个脚本时多次设置它。
答案 0 :(得分:0)
您只能在初始化驱动程序时定义它。因此,要使用新路径{@ 1}}并再次启动它。
答案 1 :(得分:0)
在 Linux 和 Mac 上,您可以将配置文件首选项设置为下载到一个目录,该目录是指向另一个目录的符号链接。然后,在运行 Selenium 驱动程序时,您可以使用 Python 中的 os
库将符号链接的目标更改为要下载文件的目录。
代码大纲(不含 try/except
等):
import os
from selenium import webdriver
DRIVER = "/usr/local/bin/geckodriver"
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.dir", "/your/symlink/name")
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "your/mime/type")
driver = webdriver.Firefox(firefox_profile=fp, executable_path=DRIVER)
# delete symlink before changing to prevent a FileExistsError when changing the link
if os.path.exists("/your/symlink/name"):
os.unlink("/your/symlink/name")
# actually change/create the link
os.symlink("/real/target/directory", "/your/symlink/name")
# download the file
driver.get("https://example.com/file")
# set new target directory
os.unlink("/your/symlink/name")
os.symlink("/different/target/directory", "/your/symlink/name")
driver.get("https://example.com/otherfile")