[Windows] Use function to get selenium asset url (#8448)

This commit is contained in:
Vasilii Polikarpov
2023-10-09 10:55:12 +02:00
committed by GitHub
parent 23ff0d7468
commit ddebd05257
3 changed files with 47 additions and 22 deletions

View File

@@ -617,6 +617,7 @@ function Get-GitHubPackageDownloadUrl {
[string]$Version, [string]$Version,
[string]$UrlFilter, [string]$UrlFilter,
[boolean]$IsPrerelease = $false, [boolean]$IsPrerelease = $false,
[boolean]$LatestReleaseOnly = $true,
[int]$SearchInCount = 100 [int]$SearchInCount = 100
) )
@@ -626,20 +627,35 @@ function Get-GitHubPackageDownloadUrl {
$json = Invoke-RestMethod -Uri "https://api.github.com/repos/${RepoOwner}/${RepoName}/releases?per_page=${SearchInCount}" $json = Invoke-RestMethod -Uri "https://api.github.com/repos/${RepoOwner}/${RepoName}/releases?per_page=${SearchInCount}"
$tags = $json.Where{ $_.prerelease -eq $IsPrerelease -and $_.assets }.tag_name $tags = $json.Where{ $_.prerelease -eq $IsPrerelease -and $_.assets }.tag_name
$versionToDownload = $tags | $availableVersions = $tags |
Select-String -Pattern "\d+.\d+.\d+" | Select-String -Pattern "\d+.\d+.\d+" |
ForEach-Object { $_.Matches.Value } | ForEach-Object { $_.Matches.Value } |
Where-Object { $_ -like "$Version.*" -or $_ -eq $Version } | Where-Object { $_ -like "$Version.*" -or $_ -eq $Version } |
Sort-Object { [version]$_ } | Sort-Object -Descending { [version]$_ }
Select-Object -Last 1
if (-not $versionToDownload) { if (-not $availableVersions) {
Write-Host "Failed to get a tag name from ${RepoOwner}/${RepoName} releases" throw "Failed to get available versions from ${RepoOwner}/${RepoName} releases"
exit 1
} }
$UrlFilter = $UrlFilter -replace "{BinaryName}",$BinaryName -replace "{Version}",$versionToDownload if ($LatestReleaseOnly) {
$downloadUrl = $json.assets.browser_download_url -like $UrlFilter $latestVersion = $availableVersions | Select-Object -First 1
$urlFilterReplaced = $UrlFilter -replace "{BinaryName}", $BinaryName -replace "{Version}", $latestVersion
$downloadUrl = $json.assets.browser_download_url -like $urlFilterReplaced
} else {
foreach ($version in $availableVersions) {
$urlFilterReplaced = $UrlFilter -replace "{BinaryName}", $BinaryName -replace "{Version}", $version
$downloadUrl = $json.assets.browser_download_url -like $urlFilterReplaced
if ($downloadUrl) {
Write-Host "Found download url for ${RepoOwner}/${RepoName} ${BinaryName} ${version}"
break
}
}
}
if (-not $downloadUrl) {
throw "Failed to get download url for ${RepoOwner}/${RepoName} ${BinaryName}"
}
return $downloadUrl return $downloadUrl
} }

View File

@@ -1,18 +1,22 @@
################################################################################ ################################################################################
## File: Install-SeleniumWebDrivers.ps1 ## File: Install-IEWebDriver.ps1
## Desc: Install Selenium Web Drivers ## Desc: Install IE Web Driver
################################################################################ ################################################################################
$seleniumMajorVersion = (Get-ToolsetContent).selenium.version
$json = Invoke-RestMethod -Uri "https://api.github.com/repos/SeleniumHQ/selenium/releases?per_page=100" $ieDriverUrl = Get-GitHubPackageDownloadUrl `
$ieDriverUrl = $json.Where{-not $_.prerelease}.assets.browser_download_url | Where-Object { $_ -like "*IEDriverServer_x64_*.zip" } | Select-Object -First 1 -RepoOwner "SeleniumHQ" `
-RepoName "selenium" `
-BinaryName "IEDriverServer_x64" `
-Version $seleniumMajorVersion `
-UrlFilter "*{BinaryName}_{Version}.zip" `
-LatestReleaseOnly $false
# Download IE selenium driver # Download IE selenium driver
try { try {
Write-Host "Selenium IEDriverServer download and install..." Write-Host "Selenium IEDriverServer download and install..."
$driverZipFile = Start-DownloadWithRetry -Url $ieDriverUrl -Name "SeleniumWebDrivers.zip" $driverZipFile = Start-DownloadWithRetry -Url $ieDriverUrl -Name "SeleniumWebDrivers.zip"
} } catch {
catch {
Write-Error "[!] Failed to download $ieDriverUrl" Write-Error "[!] Failed to download $ieDriverUrl"
exit 1 exit 1
} }

View File

@@ -11,8 +11,13 @@ New-Item -ItemType directory -Path $seleniumDirectory
$seleniumMajorVersion = (Get-ToolsetContent).selenium.version $seleniumMajorVersion = (Get-ToolsetContent).selenium.version
$seleniumBinaryName = (Get-ToolsetContent).selenium.binary_name $seleniumBinaryName = (Get-ToolsetContent).selenium.binary_name
$seleniumFileName = "$seleniumBinaryName.jar" $seleniumFileName = "$seleniumBinaryName.jar"
$json = Invoke-RestMethod -Uri "https://api.github.com/repos/SeleniumHQ/selenium/releases?per_page=100"
$seleniumDownloadUrl = $json.Where{-not $_.prerelease}.assets.browser_download_url | Where-Object { $_ -like "*${seleniumBinaryName}-${seleniumMajorVersion}.*jar" } | Select-Object -First 1 $seleniumDownloadUrl = Get-GitHubPackageDownloadUrl `
-RepoOwner "SeleniumHQ" `
-RepoName "selenium" `
-BinaryName "$seleniumBinaryName" `
-Version $seleniumMajorVersion `
-UrlFilter "*{BinaryName}-{Version}.jar"
Start-DownloadWithRetry -Url $seleniumDownloadUrl -Name $seleniumFileName -DownloadPath $seleniumDirectory Start-DownloadWithRetry -Url $seleniumDownloadUrl -Name $seleniumFileName -DownloadPath $seleniumDirectory