硒在下载时提供文件名

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

无论如何,我可以给文件下载一个特定的名称?

码:

#!/usr/bin/python
from selenium import webdriver
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile

profile = FirefoxProfile()
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/plain, application/vnd.ms-excel, text/csv, text/comma-separated-values, application/octet-stream")
profile.set_preference("browser.download.dir", "C:Downloads" )
browser = webdriver.Firefox(firefox_profile=profile)

browser.get('https://test.com/')
browser.find_element_by_partial_link_text("Excel").click() # Download file

您不能通过硒指定下载文件的名称。 但是,您可以下载该文件,在下载的文件夹中找到最新文件,然后根据需要重命名。

注意:来自谷歌搜索的借用方法可能有错误。 但你明白了。

import os
import shutil

filename = max([f for f in os.listdir('c:downloads')], key=os.path.getctime)
shutil.move(os.path.join(dirpath,filename),newfilename)

有什么我会纠正@parishodak回答:

这里的文件名只会返回相对路径(这里是文件名)而不是绝对路径。

这就是为什么在@FreshRamen之后出现以下错误:

File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/‌​python2.7/genericpath.py", 
line 72, in getctime return os.stat(filename).st_ctime OSError: 
[Errno 2] No such file or directory: '.localized'

有正确的代码:

import os
import shutil

filepath = 'c:downloads'
filename = max([filepath +""+ f for f in os.listdir(filepath)], key=os.path.getctime)
shutil.move(os.path.join(dirpath,filename),newfilename)

希望这段代码不会让人困惑。 我花了一段时间来创建它,并且非常有用,因为对于这个问题没有一个明确的答案,只有这个库。

import os
import time
def tiny_file_rename(newname, folder_of download):
    filename = max([f for f in os.listdir(folder_of download)], key=lambda xa :   os.path.getctime(os.path.join(folder_of_download,xa)))
    if '.part' in filename:
        time.sleep(1)
        os.rename(os.path.join(folder_of download, filename), os.path.join(folder_of download, newname))
    else:
        os.rename(os.path.join(folder_of download, filename),os.path.join(folder_of download,newname))

希望这可以挽救某人的欢乐时光。

编辑:感谢@Om Prakash编辑我的代码,这让我记得我没有解释代码。

使用max([])函数可能会导致竞争条件,从而导致空白或损坏的文件(我从经验中知道)。 你想检查文件是否完全下载。 这是因为硒不会等待文件下载完成,因此当您检查上次创建的文件时,不完整的文件将显示在您生成的列表中,并且它将尝试移动该文件。 即使这样,你最好还是等一会儿,让文件免于使用Firefox。

链接地址: http://www.djcxy.com/p/89531.html

上一篇: Selenium give file name when downloading

下一篇: Partition Problems Brute Force Algorithm