2017年9月17日日曜日

VagrantでSeleniumとheadlessモードのfirefoxがインストールされた仮想マシン(Ubuntu16.04)を構築する

以下のVagrantfileでSeleniumとheadlessモードのfirefoxがインストールされた仮想マシンを構築できます。
vagrantユーザでログオン後、source /opt/anaconda/bin/activateを実行後、sample.pyを実行するとgoogleの検索結果のスクリーンショットを取得します。

Vagrantfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604selenium"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604selenium"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
  config.vm.network "private_network", ip: "192.168.55.102", :netmask => "255.255.255.0"
  config.vm.network "public_network", ip:"192.168.1.102", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
# update packages
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install bzip2 wget firefox language-pack-ja fonts-ipafont-gothic fonts-ipafont-mincho
wget https://repo.continuum.io/archive/Anaconda3-4.4.0-Linux-x86_64.sh
chmod +x Anaconda3-4.4.0-Linux-x86_64.sh
./Anaconda3-4.4.0-Linux-x86_64.sh -b -p /opt/anaconda
source /opt/anaconda/bin/activate 
pip install selenium 
wget https://github.com/mozilla/geckodriver/releases/download/v0.19.0/geckodriver-v0.19.0-linux64.tar.gz 
tar -xvzf geckodriver-v0.19.0-linux64.tar.gz 
chmod +x geckodriver 
cp geckodriver /usr/local/bin/

echo "export MOZ_HEADLESS=1" >> ~vagrant/.bash_profile
chown vagrant:vagrant ~vagrant/.bash_profile

cat << EOF > /vagrant/sample.py
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()

driver.get('https://www.google.co.jp/')
input = driver.find_element_by_name('q')
input.send_keys('selenium')
input.submit()
RESULTS_LOCATOR = "//div/h3/a"

WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.XPATH, RESULTS_LOCATOR)))

# get screen shot
driver.save_screenshot('screenshot1.png')
print("quit")
driver.quit()

EOF
echo '1. logon as vagrant'
echo '2. source /opt/anaconda/bin/activate'
echo '3. cd /vagrant && python sample.py'
SHELL
end

○関連項目
DockerでSeleniumとHeadless modeのFirefoxがインストールされたコンテナを作成する

0 件のコメント:

コメントを投稿