autohotkey-api-libraries/Selenium-ChromeDriver-API.ahk
2023-12-13 16:58:11 -05:00

132 lines
4.0 KiB
AutoHotkey

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