使用Selenium / Python多次更改FirefoxProfile()首选项

时间:2015-07-30 21:33:56

标签: python-2.7 selenium-webdriver

所以我尝试将多个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)

此代码将设置我想要的路径一次。但我希望能够在运行一个脚本时多次设置它。

2 个答案:

答案 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")