вот пример Vagrantfile который устанавливает "downlevel" FF, Chrome, ChromeDriver и Selenium
hub доступен на http://127.0.0.1:444...source/hub.html
с небольшой задержкой
после
export PROVISION_SELENIUM=true
vagrant up
# Standalone ubuntu box with tmux-driven Fluxbox autologin and Selenium Server, Chrome and Firefox
# based on : https://github.com/Anomen/vagrant-selenium/blob/master/script.sh
provision_selenium = ENV.fetch('PROVISION_SELENIUM', '')
selenium_version = ENV.fetch('SELENIUM_VERSION', '2.47')
chromedriver_version = ENV.fetch('CHROMEDRIVER_VERSION', '2.16')
firefox_version = ENV.fetch('FIREFOX_VERSION', '40.0.3')
chrome_version = ENV.fetch('CHROME_VERSION', '50.0.2661.75')
# check if requested Chrome version is available on http://www.slimjetbrowser.com
available_chrome_versions = %w|
53.0.2785.116
52.0.2743.116
51.0.2704.84
50.0.2661.75
49.0.2623.75
48.0.2564.109
|
unless available_chrome_versions.include?(chrome_version)
puts "Very few specific old Chrome versions available :\n" + available_chrome_versions.join("\n")
exit
# See also: https://google-chrome.en.uptodown.com/ubuntu/old
end
VAGRANTFILE_API_VERSION = '2'
basedir = ENV.fetch('HOME','') || ENV.fetch('USERPROFILE', '')
box_memory = ENV.fetch('BOX_MEMORY', '2048').to_i
basedir = basedir.gsub('\\', '/')
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = 'ubuntu/trusty64'
# Localy cached images from http://www.vagrantbox.es/ and http://dev.modern.ie/tools/vms/linux/
# config_vm_box_name ='trusty-server-cloudimg-amd64-vagrant-disk1.box'
config_vm_box_name = 'trusty-server-amd64-vagrant-selenium.box'
config.vm.box_url = "file://#{basedir}/Downloads/#{config_vm_box_name}"
config.vm.network :forwarded_port, guest:4444, host:4444
config.vm.network :private_network, ip: '192.168.33.10'
config.vm.provision 'shell', inline: <<-END_OF_PROVISION
#!/bin/sh
#=========================================================
# set -x
#=========================================================
echo 'Install the packages...'
#=========================================================
sudo apt-get -qq update
sudo apt-get -qqy install fluxbox xorg unzip vim default-jre rungetty wget
#=========================================================
echo "Set autologin for the Vagrant user..."
#=========================================================
sudo sed -i '$ d' /etc/init/tty1.conf
sudo echo 'exec /sbin/rungetty --autologin vagrant tty1' >> /etc/init/tty1.conf
#=========================================================
cat <<EOF>> .profile
if [ ! -e '/tmp/.X0-lock' ] ; then
echo -n 'Start X on login...'
startx
else
echo 'X is alredy running...'
fi
EOF
PROVISION_SELENIUM='#{provision_selenium}'
if [ "$PROVISION_SELENIUM" != '' ] ; then
#================-==========================================
echo 'Updating Selenium app stack...'
#===========================================================
FIREFOX_VERSION='#{firefox_version}'
if [ "$FIREFOX_VERSION" = '' ]
then
#=========================================================
echo 'Install the latest Firefox'
#=========================================================
sudo apt-get -qqy install firefox
else
#=========================================================
echo "Install the Firefox version ${FIREFOX_VERSION}"
#=========================================================
URL="https://ftp.mozilla.org/pub/firefox/releases/${FIREFOX_VERSION}/linux-x86_64/en-US/firefox-${FIREFOX_VERSION}.tar.bz2"
FIREFOX_ARCHIVE="/var/tmp/firefox-${FIREFOX_VERSION}.tar.bz2"
wget -O $FIREFOX_ARCHIVE -nv $URL
pushd /home/vagrant
mkdir -p firefox
tar xjf $FIREFOX_ARCHIVE
sudo cp -R firefox /usr/lib
popd
fi
SELENIUM_VERSION='#{selenium_version}'
if [ "$SELENIUM_VERSION" = '' ]
then
#=========================================================
echo "Download latest Selenium Server..."
#=========================================================
SELENIUM_RELEASE=$(curl -# "https://selenium-release.storage.googleapis.com/" | perl -n -e'/.*<Key>([^>]+selenium-server-standalone[^<]+)/ && print $1')
else
#=========================================================
echo "Download Selenium version ${SELENIUM_VERSION} ..."
#=========================================================
RELEASE_REGEX=$(echo "/.*<Key>(${SELENIUM_VERSION}[^>]+selenium-server-standalone[^<]+)/&& print \\$1")
SELENIUM_RELEASE=$(curl -# "https://selenium-release.storage.googleapis.com/" | perl -n -e"${RELEASE_REGEX}")
fi
export URL="https://selenium-release.storage.googleapis.com/${SELENIUM_RELEASE}"
#=========================================================
echo "Downloading Selenium from \\"${URL}\\""
#=========================================================
wget -nv -O selenium-server-standalone.jar $URL
chown vagrant:vagrant selenium-server-standalone.jar
CHROME_VERSION='#{chrome_version}'
if [ "$CHROME_VERSION" = '' ]
then
#=========================================================
echo "Download the latest Chrome..."
#=========================================================
# http://askubuntu.com/questions/79280/how-to-install-chrome-browser-properly-via-command-line
wget -nv "https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb"
sudo apt-get install -qqy libxss1 libappindicator1 libindicator7
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo rm google-chrome-stable_current_amd64.deb
sudo apt-get install -qqy -f google-chrome-stable
else
sudo apt-get remove -qqy -f google-chrome-stable
echo "Installing Chrome version ${CHROME_VERSION}"
export URL="http://www.slimjetbrowser.com/chrome/lnx/chrome64_${CHROME_VERSION}.deb"
echo "Downloading Chrome from ${URL}"
wget -nv $URL
sudo apt-get install -qqy libxss1 libappindicator1 libindicator7
sudo dpkg -i "chrome64_${CHROME_VERSION}.deb"
sudo rm "chrome64_${CHROME_VERSION}.deb"
fi
CHROMEDRIVER_VERSION='#{chromedriver_version}'
if [ "$CHROMEDRIVER_VERSION" = '' ]
then
#=========================================================
echo 'Download latest Chrome Driver...'
#=========================================================
CHROMEDRIVER_VERSION=$(curl -# "http://chromedriver.storage.googleapis.com/LATEST_RELEASE")
else
echo "Download Chrome Driver version ${CHROMEDRIVER_VERSION} ..."
fi
wget -O "/var/tmp/chromedriver_linux64.zip" -nv "http://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip"
pushd /home/vagrant
unzip -o "/var/tmp/chromedriver_linux64.zip"
ls
chown vagrant:vagrant chromedriver
popd
fi
#=========================================================
echo -n 'Set screen resolution'
#=========================================================
cat <<EOF>> /home/vagrant/.fluxbox/startup
xrandr -s 1280x800
EOF
#=========================================================
echo -n 'Install tmux scripts'
#=========================================================
cat <<EOF> tmux.sh
#!/bin/sh
tmux start-server
tmux new-session -d -s chrome-driver
tmux send-keys -t chrome-driver:0 'export DISPLAY=:0' C-m
tmux send-keys -t chrome-driver:0 './chromedriver' C-m
tmux new-session -d -s selenium
tmux send-keys -t selenium:0 'export DISPLAY=:0' C-m
# NOTE options for java runtime.
tmux send-keys -t selenium:0 'java -Xmn512M -Xms1G -Xmx1G -jar selenium-server-standalone.jar' C-m
tmux send-keys -t selenium:0 'for cnt in {0..10}; do wget -O- http://127.0.0.1:4444/wd/hub; sleep 120; done' C-m
EOF
chmod +x tmux.sh
chown vagrant:vagrant tmux.sh
#=========================================================
echo -n 'Install startup scripts'
#=========================================================
cat <<EOF> /etc/X11/Xsession.d/9999-common_start
#!/bin/sh
/home/vagrant/tmux.sh &
xterm -fa fixed &
EOF
chmod +x /etc/X11/Xsession.d/9999-common_start
#=========================================================
echo -n 'Add host alias'
#=========================================================
echo '192.168.33.1 host'| tee /etc/hosts
#=========================================================
echo 'Reboot the VM'
#=========================================================
sudo reboot
END_OF_PROVISION
config.vm.provider :virtualbox do |v|
v.gui = true
v.name = 'Selenium Fluxbox'
v.customize ['modifyvm', :id, '--memory', box_memory ]
v.customize ['modifyvm', :id, '--vram', '16']
v.customize ['modifyvm', :id, '--clipboard', 'bidirectional']
v.customize ['setextradata', 'global', 'GUI/MaxGuestResolution', 'any']
v.customize ['setextradata', :id, 'CustomVideoMode1', '1280x900x32']
# supported by fluxbox
end
end
надеюсь кому то может пригодиться. Улучшения, рекомендации - приветствуются