|
1 | | -#!/bin/bash |
2 | | -#set -x |
3 | | - |
4 | | -MAJOR_VERSION=2.53 |
5 | | -VERSION=${MAJOR_VERSION}.0 |
6 | | -JAR_FILE=selenium-server-standalone-${VERSION}.jar |
7 | | - |
8 | | - |
9 | | -CHROMEDRIVER_VERSION=`curl http://chromedriver.storage.googleapis.com/LATEST_RELEASE` |
10 | | -CHROMEDRIVER_FILE=chromedriver-${CHROMEDRIVER_VERSION} |
11 | | -CURRENT_CHROMEDRIVER_VERSION_FILE=current_chromedriver_version.txt |
12 | | - |
13 | | -FIREFOXDRIVER_VERSION=0.15.0 |
14 | | -FIREFOXDRIVER_FILE=geckodriver |
15 | | - |
16 | | -SOURCE="${BASH_SOURCE[0]}" |
17 | | -while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink |
18 | | - DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" |
19 | | - SOURCE="$(readlink "$SOURCE")" |
20 | | - [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located |
21 | | -done |
22 | | -DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" |
23 | | -cd $DIR/../binaries/ |
24 | | -if [[ $? != 0 ]] |
25 | | -then |
26 | | - echo "Failed cd-ing into the the binaries folder, aborting" |
27 | | - exit 1 |
28 | | -fi |
29 | | - |
30 | | -# Making sure that the chrome driver is up to date |
31 | | -if [ -f ${CURRENT_CHROMEDRIVER_VERSION_FILE} ] |
32 | | -then |
33 | | - CURRENT_CHROMEDRIVER_VERSION=`cat ${CURRENT_CHROMEDRIVER_VERSION_FILE}` |
34 | | -else |
35 | | - CURRENT_CHROMEDRIVER_VERSION=false |
36 | | -fi |
37 | | - |
38 | | -echo ${CHROMEDRIVER_VERSION} > ${CURRENT_CHROMEDRIVER_VERSION_FILE} |
39 | | - |
40 | | -if [[ ${CURRENT_CHROMEDRIVER_VERSION} != ${CHROMEDRIVER_VERSION} && -f ${CHROMEDRIVER_FILE} ]] |
41 | | -then |
42 | | - rm -f ${CHROMEDRIVER_FILE} |
43 | | - rm -f chromedriver_linux64.zip |
44 | | -fi |
45 | | - |
46 | | -## Host File bug sanity check |
47 | | -grep -P '127.0.0.1\s*localhost' /etc/hosts > /dev/null |
48 | | -if [[ $? != 0 ]] |
49 | | -then |
50 | | - echo " |
51 | | -
|
52 | | - WARNING |
53 | | -
|
54 | | - Selenium won't work unless your hosts file localhost aliases start explictly with: |
55 | | -
|
56 | | - 127.0.0.1 localhost ...other aliases here |
57 | | -
|
58 | | - Please edit your hosts file and try again |
59 | | -
|
60 | | - See: |
61 | | - https://code.google.com/p/selenium/issues/detail?id=3280 |
62 | | -
|
63 | | -Your hosts line is: |
64 | | - " |
65 | | - grep '127.0.0.1' /etc/hosts |
66 | | - echo; |
67 | | - exit 1 |
68 | | -fi |
69 | | - |
70 | | -if [ ! -f $JAR_FILE ] |
71 | | -then |
72 | | - echo "Selenium JAR file not found - trying to wget the file" |
73 | | - DOWNLOAD_URL="http://selenium-release.storage.googleapis.com/${MAJOR_VERSION}/selenium-server-standalone-${VERSION}.jar" |
74 | | - echo $DOWNLOAD_URL |
75 | | - wget $DOWNLOAD_URL |
76 | | - if [[ $? != 0 ]] |
77 | | - then |
78 | | - echo "Failed downloading, please grab it manually" |
79 | | - exit 1 |
80 | | - fi |
81 | | -fi |
82 | | - |
83 | | -if [ ! -f $CHROMEDRIVER_FILE ] |
84 | | -then |
85 | | - echo "Chromedriver file not found - trying to wget the file" |
86 | | - DOWNLOAD_URL="http://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip" |
87 | | - echo $DOWNLOAD_URL |
88 | | - wget $DOWNLOAD_URL |
89 | | - if [[ $? != 0 ]] |
| 1 | +#!/usr/bin/env bash |
| 2 | +DIR=$(dirname $(readlink -f "$0")) |
| 3 | +cd $DIR; |
| 4 | +set -e |
| 5 | +set -u |
| 6 | +set -o pipefail |
| 7 | +standardIFS="$IFS" |
| 8 | +IFS=$'\n\t' |
| 9 | +echo " |
| 10 | +=========================================== |
| 11 | +$(hostname) $0 $@ |
| 12 | +=========================================== |
| 13 | +" |
| 14 | +# Error Handling |
| 15 | +backTraceExit () { |
| 16 | + local err=$? |
| 17 | + set +o xtrace |
| 18 | + local code="${1:-1}" |
| 19 | + printf "\n\nError in ${BASH_SOURCE[1]}:${BASH_LINENO[0]}. '${BASH_COMMAND}'\n\n exited with status: \n\n$err\n\n" |
| 20 | + # Print out the stack trace described by $function_stack |
| 21 | + if [ ${#FUNCNAME[@]} -gt 2 ] |
90 | 22 | then |
91 | | - echo "Failed downloading, please grab it manually" |
92 | | - exit 1 |
| 23 | + echo "Call tree:" |
| 24 | + for ((i=1;i<${#FUNCNAME[@]}-1;i++)) |
| 25 | + do |
| 26 | + echo " $i: ${BASH_SOURCE[$i+1]}:${BASH_LINENO[$i]} ${FUNCNAME[$i]}(...)" |
| 27 | + done |
93 | 28 | fi |
94 | | - if [ -f chromedriver ] |
| 29 | + echo "Exiting with status ${code}" |
| 30 | + exit "${code}" |
| 31 | +} |
| 32 | +trap 'backTraceExit' ERR |
| 33 | +set -o errtrace |
| 34 | +missingPackages=false |
| 35 | +for package in unzip java |
| 36 | +do |
| 37 | + if [[ "" == "$(which $package)" ]] |
95 | 38 | then |
96 | | - rm chromedriver |
| 39 | + echo "Package $package is missing"; |
| 40 | + missingPackages=true; |
97 | 41 | fi |
98 | | - unzip chromedriver_linux64.zip |
99 | | - mv chromedriver $CHROMEDRIVER_FILE |
100 | | -fi |
| 42 | +done |
101 | 43 |
|
102 | | -if [ ! -f $FIREFOXDRIVER_FILE ] && [[ "$@" =~ .*firefox.* ]] |
| 44 | +if [[ "false" != "$missingPackages" ]] |
103 | 45 | then |
104 | | - if [ $(echo "$MAJOR_VERSION < 3.3" | bc -l) == 1 ] |
105 | | - then |
106 | | - echo "WARNING: the latest geckodriver requires selenium 3.3 and above"; |
107 | | - exit 1 |
108 | | - fi |
| 46 | + echo "Packages are missing, please install them" |
| 47 | + exit 1 |
| 48 | +fi |
109 | 49 |
|
110 | | - echo "Firefoxdirver file not found - trying to wget the file" |
| 50 | +jarFile=${1:-'false'} |
111 | 51 |
|
112 | | - DOWNLOAD_URL="https://github.com/mozilla/geckodriver/releases/download/v${FIREFOXDRIVER_VERSION}/geckodriver-v${FIREFOXDRIVER_VERSION}-linux64.tar.gz" |
113 | | - echo $DOWNLOAD_URL |
114 | | - wget $DOWNLOAD_URL |
115 | | - if [[ $? != 0 ]] |
116 | | - then |
117 | | - echo "Failed downloading, please grab it manually" |
118 | | - exit 1 |
119 | | - fi |
120 | | - if [ -f $FIREFOXDRIVER_FILE ] |
121 | | - then |
122 | | - rm $FIREFOXDRIVER_FILE |
123 | | - fi |
124 | | - tar -xzvf geckodriver-v${FIREFOXDRIVER_VERSION}-linux64.tar.gz |
125 | | - mv geckodriver $FIREFOXDRIVER_FILE |
| 52 | +if [[ "false" == "$jarFile" ]] |
| 53 | +then |
| 54 | + source ./download-binaries.bash |
126 | 55 | fi |
127 | 56 |
|
128 | | -echo "Starting Selenium" |
| 57 | +echo "Now Starting Selenium" |
129 | 58 |
|
130 | 59 | echo "Killing if already running:" |
131 | | -source $DIR/selenium-stop.bash |
| 60 | +bash $DIR/selenium-stop.bash |
132 | 61 |
|
133 | 62 |
|
134 | 63 | if [[ "$@" =~ .*firefox.* ]] |
135 | 64 | then |
136 | | - echo "starting firefox selenium |
137 | | - " |
138 | | - java -jar $JAR_FILE |
| 65 | + echo "starting firefox selenium" |
| 66 | + java -jar $jarFile |
139 | 67 | else |
140 | | - echo "starting chrome selenium |
141 | | - " |
142 | | - java -jar $JAR_FILE -Dwebdriver.chrome.driver=${CHROMEDRIVER_FILE} |
| 68 | + echo "starting chrome selenium" |
| 69 | + java -jar $jarFile -Dwebdriver.chrome.driver=${chromedriverFile} |
143 | 70 | fi |
0 commit comments