# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # # # Powershell script updating Selenium drivers on ci server # # Author: Martin Stockhammer # Date : 2017-05-14 # # Description: # This script checks, if the selenium drivers are available on the system and downloads # and extracts them, if they do not exist. # # Parameter: # -Verbose: Print additional output # -Force: Remove the existing drivers and download/extract them again param ( [switch]$Verbose = $False, [switch]$Force = $False ) $psVersion = $PSVersionTable.PSVersion $baseDir = "F:\jenkins\tools" if ($Verbose) { Write-Output "PS-Version: $psVersion" Write-Output "Verbose: $Verbose, Force: $Force" } $urls = @{ "iedriver\2.53.1\win64\DriverServer.zip"="http://selenium-release.storage.googleapis.com/2.53/IEDriverServer_x64_2.53.1.zip" "iedriver\2.53.1\win32\DriverServer.zip"="http://selenium-release.storage.googleapis.com/2.53/IEDriverServer_Win32_2.53.1.zip" "iedriver\3.4.0\win64\DriverServer.zip"="http://selenium-release.storage.googleapis.com/3.4/IEDriverServer_x64_3.4.0.zip" "iedriver\3.4.0\win32\DriverServer.zip"="http://selenium-release.storage.googleapis.com/3.4/IEDriverServer_Win32_3.4.0.zip" "chromedriver\2.29\win32\DriverServer.zip"="http://chromedriver.storage.googleapis.com/2.29/chromedriver_win32.zip" "geckodriver\0.16.1\win32\DriverServer.zip"="http://github.com/mozilla/geckodriver/releases/download/v0.16.1/geckodriver-v0.16.1-win32.zip" "geckodriver\0.16.1\win64\DriverServer.zip"="http://github.com/mozilla/geckodriver/releases/download/v0.16.1/geckodriver-v0.16.1-win64.zip" } foreach ($h in $urls.GetEnumerator()) { $url = $h.Value $downloadFile = "$($baseDir)\$($h.Name)" $downloadDir = Split-Path $downloadFile -Parent if ($Force -And (Test-Path -Path $downloadDir ) ) { Get-ChildItem -Path $downloadDir -Recurse | Remove-Item -force -recurse } if(!(Test-Path -Path $downloadDir )){ New-Item -ItemType directory -Path $downloadDir } if ($Force -Or !(Test-Path -Path $downloadFile )){ Write-Output "Downloading Driver $url" Invoke-WebRequest -Uri $url -OutFile $downloadFile $shell = New-Object -ComObject shell.application $zip = $shell.NameSpace($downloadFile) foreach ($item in $zip.items()) { $shell.Namespace($downloadDir).CopyHere($item) } if ($Verbose) { Get-ChildItem -Path $downloadDir } } }