Скачать файл в определенный каталог, используя селен - PullRequest
0 голосов
/ 24 декабря 2018

Я очищаю веб-сайт с учетными данными, и мне нужно щелкнуть элемент (кнопку), который экспортирует файл PDF (не как сохранить как окно).

Кнопка напрямую экспортирует файл PDF в C:\Users\User\Downloads.

Как вместо этого изменить каталог на рабочий стол?

Также как переименовать файл?

Код, используемый для нажатия этой кнопки

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, связанный с этой кнопкой

<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>

1 Ответ

0 голосов
/ 24 декабря 2018

Вы определяете загрузку по умолчанию в начале с SetPreference.Затем вы можете переименовать файл, найдя последний измененный файл в этой папке (в этом случае я использую объект файловой системы с маской .csv)

Если у вас есть реальный URL для загрузки, используйте URLMon илибинарная загрузка .

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:\Users\User\Downloads"
    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
...