使用 selenium 将文件下载到特定目录 [英] Download file to specific directory using selenium

查看:80
本文介绍了使用 selenium 将文件下载到特定目录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用凭据抓取网站,我必须单击导出 pdf 文件(不是另存为窗口)的元素(按钮).

I am scraping a website with credentials and I have to click an element (button) that exports a pdf file (not as save as window).

按钮直接将pdf文件导出到C:UsersUserDownloads.

The button directly exports the pdf file to C:UsersUserDownloads.

如何将目录改为桌面?

还有如何重命名文件?

用于单击此按钮的代码

On Error Resume Next
Do While .FindElementByXPath("//*[@id='theBttnbobjid_1545645103945_dialog_submitBtn']") Is Nothing
    DoEvents
Loop
On Error GoTo 0
.FindElementByXPath("//*[@id='theBttnbobjid_1545645103945_dialog_submitBtn']").Click

这是与那个按钮相关的html

This is the html related to that button

<tbody><tr valign="middle"><td height="21" width="5" style="background-image:url('aspnet_client/system_web/4_0_30319/crystalreportviewers13/js/crviewer/../dhtmllib/images/skin_standard/button.gif');background-position:0px 0px;"></td><td id="theBttnCenterImgbobjid_1545648005071_dialog_submitBtn" align="center" class="wizbutton" style="padding-left:3px;padding-right:3px;background-image:url('aspnet_client/system_web/4_0_30319/crystalreportviewers13/js/crviewer/../dhtmllib/images/skin_standard/button.gif');background-position:0px -42px;"><nobr><a id="theBttnbobjid_1545648005071_dialog_submitBtn" href="javascript:void(0)" class="wizbutton" role="button">Export</a></nobr></td><td height="21" width="5" style="background-image:url('aspnet_client/system_web/4_0_30319/crystalreportviewers13/js/crviewer/../dhtmllib/images/skin_standard/button.gif');background-position:0px -21px;"></td></tr></tbody>

推荐答案

您在开始时使用 SetPreference 指定默认下载.然后,您可以通过在该文件夹中查找最新修改的文​​件来重命名文件(在这种情况下,我使用带有 .csv 掩码的文件系统对象)

You specify the default download at the start with SetPreference. You could then rename the file by finding the latest modified file in that folder (in this case I use file system object with .csv mask)

如果您有实际的下载 URL,请使用 URLMon 或二进制下载.

If you have an actual URL for download then use URLMon or binary download.

Option Explicit
Public Sub SpecifyDownloadFolder()
    Dim d As WebDriver, filename As String, myFolder As Object
    Const URL = "https://www.stats.govt.nz/large-datasets/csv-files-for-download/"
    Const DOWNLOAD_DIRECTORY As String = "C:UsersUserDownloads"
    Const FILE_NAME As String = "myNewCsv.csv"
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")   
    Set d = New ChromeDriver
    With d
        .SetPreference "download.default_directory", DOWNLOAD_DIRECTORY
        .SetPreference "download.directory_upgrade", True 'safeguard
        .SetPreference "download.prompt_for_download", False 'safeguard
        .get URL
        .FindElementByCss("h3 [download]").Click
        Application.Wait Now + TimeSerial(0, 0, 5)
        d.Quit
    End With

    Set myFolder = fso.GetFolder(DOWNLOAD_DIRECTORY)

    Dim objFile As Object, dteFile As Date

    dteFile = DateSerial(1900, 1, 1)
    For Each objFile In myFolder.Files
        If objFile.DateLastModified > dteFile And fso.GetExtensionName(objFile.Path) = "csv" Then
            dteFile = objFile.DateLastModified
            filename = objFile.NAME
        End If
    Next objFile
    If filename <> vbNullString And Not fso.FileExists(DOWNLOAD_DIRECTORY & "" & FILE_NAME) Then
       fso.MoveFile DOWNLOAD_DIRECTORY & "" & filename, DOWNLOAD_DIRECTORY & "" & FILE_NAME
    End If
End Sub

这篇关于使用 selenium 将文件下载到特定目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆