【问题标题】:Create a new folder and make it as default download in selenium创建一个新文件夹并将其设置为 selenium 中的默认下载
【发布时间】:2020-08-04 10:48:38
【问题描述】:

我正在 python 中进行 selenium 测试,我想用当前时间创建一个新目录并将其设为默认下载文件夹。因此,每当我运行脚本时,默认下载位置应该是当时创建的新目录,并且文件应该在那里下载。

from selenium import webdriver
from datetime import datetime
import os

today = datetime.now()

current_dir = os.mkdir("/Users/Desktop/" + today.strftime('%Y-%m-%d_%H-%M-%S'))
browser = webdriver.Chrome('/Users/Desktop/chromedriver')
chromeOptions = webdriver.ChromeOptions()
prefs = {"download.default_directory" : current_dir }
chromeOptions.add_experimental_option("prefs",prefs)

我正在运行上面的脚本,它会创建一个新文件夹,但默认下载位置不会改变,因为文件仍然在 chrome://Downloads 下载。有什么办法可以将新创建​​的文件夹更改为默认下载目录

【问题讨论】:

    标签: python selenium google-chrome datetime selenium-chromedriver


    【解决方案1】:

    您需要在两个单独的代码行中创建文件夹名称和文件夹本身:

    current_dir_name = "/Users/Desktop/" + today.strftime('%Y-%m-%d_%H-%M-%S')
    os.mkdir(current_dir_name)
    

    然后路径current_dir_name进入

    chromeOptions = webdriver.ChromeOptions()
    prefs = {"download.default_directory" : current_dir_name}
    chromeOptions.add_experimental_option("prefs", prefs)
    

    【讨论】:

      【解决方案2】:

      这里的问题在于os.mkdir 方法。 Python 中的os.mkdir() 方法用于创建一个名为path 的目录,具有指定的数值模式。此方法不返回任何值。

      调试代码的执行:

      如果你看上面的图片,你可以看到current_dir 是 None 类型。 因此,文件夹是在桌面上创建的,但它的路径没有被捕获。

      【讨论】:

        【解决方案3】:

        要创建具有当前时间的新目录,您可以使用datetime 模块,如下所示:

        • 代码块:

          from datetime import datetime
          import os
          
          
          new_dir = "C:/Users/user-name/Desktop/" + datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
          print(new_dir)
          if not os.path.exists(new_dir):
              os.makedirs(new_dir) 
          
        • 控制台输出:

          C:\Users\user-name\Desktop\Debanjan\PyPrograms>new_directory.py
          C:/Users/user-name/Desktop/2020-08-04_18-01-46
          
          C:\Users\user-name\Desktop\Debanjan\PyPrograms>new_directory.py
          C:/Users/user-name/Desktop/2020-08-04_18-02-01
          
          C:\Users\user-name\Desktop\Debanjan\PyPrograms>new_directory.py
          C:/Users/user-name/Desktop/2020-08-04_18-02-05
          
        • 新建目录的快照:


        这个用例

        现在您可以实现相同的逻辑,在每次执行时创建一个新目录,并使用Selenium 设置为默认下载位置,如下所示:

        from selenium import webdriver
        from datetime import datetime
        import os
        
        new_dir = "C:/Users/user-name/Desktop/" + datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
        print(new_dir)
        if not os.path.exists(new_dir):
            os.makedirs(new_dir) 
        
        options = webdriver.ChromeOptions() 
        options.add_experimental_option("prefs", {"download.default_directory" : new_dir})
        driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
        

        参考

        您可以在以下位置找到一些相关的详细讨论:

        【讨论】:

          猜你喜欢
          • 2022-11-11
          • 1970-01-01
          • 2017-04-04
          • 1970-01-01
          • 2021-09-07
          • 2020-12-29
          • 1970-01-01
          • 2018-04-29
          • 1970-01-01
          相关资源
          最近更新 更多