; Notes/Extra Info/#Includes ;------------------------------------------------ ; Chrome Global Variables ;------------------------------------------------ ; Chrome/Selenium global ChromeFilepath ; Declare global variables here so they don't have to be declared in each script global ChromeTabsURLArray global DriverTitleArray global LastWebsitePostURL global CurrentTabURL global URLOfLastErrorPage ; Chrome Related Functions ;------------------------------------------------ GetChromeFilepath(){ ; ChromeFilepath is global variable ; Establish Variable with Filepath to be used throughout the script if(ChromeFilepath = ""){ ChromePortableFilepath = %A_ScriptDir%\Lib\chrome-win64\chrome.exe if(FileExist(ChromePortableFilepath)){ ChromeFilepath := ChromePortableFilepath Message = Using Chromium Portable for Upload SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging") } else { if(FileExist("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe")) ChromeFilepath = C:\Program Files (x86)\Google\Chrome\Application\chrome.exe if(FileExist("C:\Program Files\Google\Chrome\Application\chrome.exe")) ChromeFilepath = C:\Program Files\Google\Chrome\Application\chrome.exe } } } GetChromeVersion(){ ; https://stackoverflow.com/questions/52457766/how-can-i-get-google-chromes-version-number ; Command = powershell `$ChromePath = 'C:\Program Files\Google\Chrome\Application\chrome.exe' `; [System.Diagnostics.FileVersionInfo]::GetVersionInfo($ChromePath).ProductVersion ; command = powershell $(Get-Package -Name 'Google Chrome').Version ; ChromeVersion := RunCMD(command) ; ChromeVersion := StrSplit(ChromeVersion, "`r")[1] ; remove newline character if it exists if(ChromeFilepath = ""){ GetChromeFilepath() } GetChromeVersionCommand = powershell (Get-Item '%ChromeFilepath%').VersionInfo.ProductVersion Chromeversion := RunCMD(GetChromeVersionCommand) ChromeVersion := StrReplace(ChromeVersion, "`r")[1] ; replace any newline characters that powershell returns return ChromeVersion } GetLatestChromeStableVersion(){ ; https://github.com/GoogleChromeLabs/chrome-for-testing#json-api-endpoints json_str := urldownloadtovar("https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json") ; converts json data variable into object parsed := JSON.Load(json_str) try CurrentChromeStableVersion := parsed.channels.stable.version if(CurrentChromeStableVersion = ""){ return "Failed to parse json. " } return CurrentChromeStableVersion } GetDownloadURLOfChromeAndDriver(ChromeVersion){ ; Will return the download URL of Chrome for Testing and Chrome Driver, seperated by a || ; https://github.com/GoogleChromeLabs/chrome-for-testing#json-api-endpoints json_str := urldownloadtovar("https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json") ; requires #include of json.ahk in parent script parsed := JSON.Load(json_str) ChromelabsJsonEntriesCount := parsed.versions.count() if(ChromelabsJsonEntriesCount = ""){ return "Failed to parse chromedriver json. " } loop % ChromelabsJsonEntriesCount { if(A_index = ChromelabsJsonEntriesCount){ Message = "Failed to find %ChromeVersion% in the ChromeLabs Json" return Message } if(ChromeVersion = parsed.versions[A_Index].version){ VersionIndex := A_Index ; loop through the platforms to get download URL for Chrome loop % parsed.versions[VersionIndex].downloads.chrome.count() { if(parsed.versions[VersionIndex].downloads.chrome[A_Index].platform = "win64") chromeDLURL64 := parsed.versions[VersionIndex].downloads.chromedriver[A_Index].url } ; loop through the platforms to get download URL for Chromedriver loop % parsed.versions[VersionIndex].downloads.chromedriver.count() { if(parsed.versions[VersionIndex].downloads.chromedriver[A_Index].platform = "win64") chromedriverDLURL64 := parsed.versions[VersionIndex].downloads.chromedriver[A_Index].url } break } } URLS = %chromeDLURL64%||%chromedriverDLURL64% return URLS }