pepearavaca Posted March 8, 2021 Share Posted March 8, 2021 Hello there. I want to download files from a web but giving them a reasonable name. I am using Chrome through DanP2's WebDriver UDF and chromedriver.exe. The problem is that everytime Chrome starts, it does NOT remenber to ask where to download the files. I have tried loading an existing profile or setting the "DesiresCapabilities" option, but the "ask where to download" option is still off. See the lines between long comment lines at the bottom of the code below. expandcollapse popup#include <Constants.au3> #include <MsgBoxConstants.au3> #include <File.au3> #include <Array.au3> #include "wd_core.au3" #include "wd_helper.au3" Local $RutaDescarga = "C:\TEMP\" Local $URL = "https://someURL/" Local $CSV = "CodeToDownloadSomething" Local $sSession Local $sDesiredCapabilities Local $sElement $_WD_DEBUG = $_WD_DEBUG_None _WD_Timeouts($sSession, '{"pageLoad":20000}') ; Open Chrome and load URL Call(SetupChrome) _WD_Startup() If @error <> $_WD_ERROR_Success Then Exit -1 EndIf $sSession = _WD_CreateSession($sDesiredCapabilities) If @error = $_WD_ERROR_Success Then Call(NavegarURL) EndIf ; Fill in the code and click the download button $sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@name='code']") _WD_ElementAction($sSession, $sElement, 'value', $CSV) $sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@name='validate']") _WD_ElementAction($sSession, $sElement, 'click') _WD_LoadWait($sSession, 2000) MsgBox($MB_SYSTEMMODAL, "Test Message", "Click to close browser") _WD_DeleteSession($sSession) _WD_Shutdown() Func SetupChrome() _WD_Option('Driver', 'chromedriver.exe') _WD_Option('Port', 9515) ; ********************************************************************************************************** ; Despite of the following line, Chrome does NOT ask where to download the file :-( $sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"goog:chromeOptions": {"w3c": true , "prefs": {"download.prompt_for_download": "True", "download.default_directory": "C:\\TEMP\\"}}}}}' ; Another NON working option is to load a profile (it also turns the "ask where to download" option off) ; $sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"goog:chromeOptions": {"w3c": true, "args":["--user-data-dir=C:\\Users\\myAccount\\AppData\\Local\\Google\\Chrome\\User Data\\Default"], "excludeSwitches": [ "enable-automation"], "useAutomationExtension": false }}}}' ; ********************************************************************************************************** EndFunc Func NavegarURL() _WD_Navigate($sSession, $URL) _WD_Attach($sSession, $URL, "URL") EndFunc Any help will be much welcome. Thanks in advance. Link to comment Share on other sites More sharing options...
Danp2 Posted March 8, 2021 Share Posted March 8, 2021 Have you tried it without the quotes around the word True? If that doesn't work, then try to break the prefs string down further. Something like this -- $sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"goog:chromeOptions": {"w3c": true , "prefs": {"download":{"prompt_for_download": true, "default_directory": "C:\\TEMP\\"}}}}}}' mLipok 1 Latest Webdriver UDF Release Webdriver Wiki FAQs Link to comment Share on other sites More sharing options...
pepearavaca Posted March 8, 2021 Author Share Posted March 8, 2021 That was it! I guess I was too obfuscated to realise I was sending a text instead of the boolean 'True' 😓 Thank you very much!!! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now