当前位置: 首页 > 面试题库 >

使用Selenium Webdriver下载时命名文件

唐元凯
2023-03-14
问题内容

我看到您可以设置通过Webdriver将文件下载到的位置,如下所示:

fp = webdriver.FirefoxProfile()

fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir",getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","text/csv")

browser = webdriver.Firefox(firefox_profile=fp)

但是,我想知道下载文件时是否有类似的方式为文件命名?最好不要与配置文件相关联,因为我将通过一个浏览器实例下载约6000个文件,并且不想为每次下载都重新启动驱动程序。

编辑:选择的答案所建议的代码解决方案。下载完每个文件后,重命名该文件。

import os
os.chdir(SAVE_TO_DIRECTORY)
files = filter(os.path.isfile, os.listdir(SAVE_TO_DIRECTORY))
files = [os.path.join(SAVE_TO_DIRECTORY, f) for f in files] # add path to each file
files.sort(key=lambda x: os.path.getmtime(x))
newest_file = files[-1]
os.rename(newest_file, docName+".pdf")

问题答案:

我不知道是否有一个纯Selenium处理程序,但是当我需要对下载的文件做一些事情时,这就是我所做的事情。

  1. 设置一个循环,轮询,它最新的文件下载目录中 具有.part扩展名(这表明部分下载和偶尔会绊倒的事情了,如果不占。把一个计时器上是为了确保你不要去成在超时的情况下发生无限循环/其他错误导致下载无法完成。我ls -t <dirname>在Linux中使用了命令的输出(我的旧代码使用commands,因此已弃用,因此在这里不显示它了:))并得到了通过使用第一个文件

    # result = output of ls -t
    

    result = result.split(‘\n’)[1].split(‘ ‘)[-1]

  2. 如果while循环成功退出,则目录中最顶层的文件将是您的文件,您可以使用os.rename(或您喜欢的其他任何文件)对其进行修改。

可能不是您正在寻找的答案,但希望它能为您指明正确的方向。



 类似资料:
  • 我是selenium的新手,我想使用selenium chrome Web驱动程序在特定的自定义文件夹中下载文件。默认情况下,该文件正在浏览器指定的下载路径中下载。任何一个建议在C#Selenium的自定义路径中下载文件的最佳解决方案。

  • 问题内容: 我正在使用Selenium从此页面自动下载csv格式的文件: https://catalog.data.gov/dataset?tags=crime 这是我正在使用的代码: 此处设置了下载文件夹: 如何选择保存文件的名称?可以在下载时定义名称吗? 我的意思是这样的: 问题答案: 您无法控制通过selenium命名的下载文件 。 您可以使用目录观察者/观察者来检测文件何时下载,然后相应地

  • 问题内容: 我正在使用selenium脚本,在其中尝试下载Excel文件并为其指定特定名称。这是我的代码: 无论如何,我可以给下载的文件指定一个特定的名称吗? 码: 问题答案: 您不能通过硒指定下载文件的名称。但是,您可以下载文件,在下载的文件夹中找到最新文件,然后根据需要重命名。 注意:从Google搜索中借用的方法可能有错误。但是你明白了。

  • 在edge中,我正在访问一个JSP页面,该页面会返回一个文件。它在chrome中工作得很好,但在Edge和Internetexplorer中,我会将mime类型附加到文件名中。 这是响应标头: Edge要求我保存文件,文件名是 persistenceIDs.xlsx.vnd.openxmlformats-officedocument.spreadsheetml.sheet 有什么想法吗?

  • 我正在使用一个selenium脚本,试图下载一个Excel文件并给它一个特定的名称。这是我的代码: 我可以给正在下载的文件一个特定的名称吗? 代码:

  • 问题内容: 我正在创建一个简单的项目,使我可以使用gwt上传和下载文件。我在下载服务器上的文件时遇到了麻烦。 对于文件上传,我使用了http://code.google.com/p/gwtupload/并按照那里的说明进行操作。我的文件存储在网站容器外部的服务器上(在硬盘上), 现在,当涉及到文件下载时,我希望用户按下下载按钮,并且当前选择的任何项目都将下载。我真的不知道该怎么做 我知道我需要下载