在Chrome瀏覽器上點擊其他軟件的安裝包,或者超鏈接,通常會彈出一個文件保存對話框,必須手工選擇文件夾和文件名稱才能繼續下去。
在SeleniumBasic中遇到這種情況會把程序堵死。
但是,Chrome瀏覽器的選項設置中,可以設置是否彈出文件保存對話框,以及保存文件的默認路徑(如果不修改設置,默認位置是C:\Users\你的用戶名\DownLoad)。
SeleniumBasic中的ChromeOptions對象,具有AddUserProfilePreference方法,可以添加個人偏好。
Private WD As SeleniumBasic.IWebDriver Sub Download() On Error GoTo Err1 Dim Service As SeleniumBasic.ChromeDriverService Dim Options As SeleniumBasic.ChromeOptions Set WD = New SeleniumBasic.IWebDriver Set Service = New SeleniumBasic.ChromeDriverService With Service .CreateDefaultService driverPath:="E:\Selenium\Drivers" .HideCommandPromptWindow = True End With Set Options = New SeleniumBasic.ChromeOptionsWith Options .BinaryLocation = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" .AddUserProfilePreference "download.prompt_for_download", False .AddUserProfilePreference "download.default_directory", "D:\Temp" Debug.Print .ToString End With WD.New_ChromeDriver Service:=Service, Options:=Options WD.URL = "https://www.cnblogs.com/ryueifu-VBA/p/9482006.html" Dim file As SeleniumBasic.IWebElement Set file = WD.FindElementByLinkText("TreeviewEditor.rar") If file Is Nothing = False Then WD.ExecuteScript "arguments[0].scrollIntoView(true);", file file.Click End If WD.Quit Exit Sub Err1: MsgBox Err.Description, vbCritical End Sub
上述程序執行后,打印個人偏好,可以看到設置參數成功。
{ "browserName": "chrome", "goog:chromeOptions": { "binary": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", "prefs": { "download.prompt_for_download": false, "download.default_directory": "D:\\Temp" } } }
本例的目的是下載一個壓縮包,網址是https://www.cnblogs.com/ryueifu-VBA/p/9482006.html。
啟動瀏覽器后自動導航到這個網址,然后根據超鏈接的文字進行定位,接下來直接Click,可以看到並未彈出保存對話框,而是直接保存到了D:\Temp。