kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

Seleniumのお勉強 (1)

テストにも使いそうだし、覚えると自動化にも使えそうなSeleniumのお勉強

まずはWindowsで動かす

Pythonで動かそうと思うんだけれどもさてPythonは何を入れればいいんだろう
cygwinを入れてて、python3が入ってる
でもwebdriverとやらとちゃんと連携取れるんだろうか

それとも python.org からダウンロードしてきて入れるべきだろうか
ふたつpythonが入ってるとかいう状態は気持ち悪い

こういうとこに選択肢はほしくないんだよなー
cygwinだと、うまくいってもたまたまかもしれないとか思ったりするし

なおブラウザはChromeを使います
特に宗教上の理由はありません
Firefox入れてないんで

とりあえずcygwinからやってみる
まずはChromeDriver

Getting started - ChromeDriver - WebDriver for Chrome を上から読みつつダウンロード
ChromeDriver 2.45っていうバージョン

適当なフォルダに保存して動かしてみる

$ ./chromedriver.exe
Starting ChromeDriver 2.45.615291 (ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387) on port 9515
Only local connections are allowed.

何かしら動いてはいる
cygwinbashから起動できるというのは安心材料になるんだろうか

seleniumをインストールする

認証プロキシ超えでちょっと苦労するなど 日頃使っていないのがバレる

$ pip3 install --proxy=http://account:password@example.com:8080 selenium
Collecting selenium
  Downloading https://files.pythonhosted.org/packages/80/d6/4294f0b4bce4de0abf13e17190289f9d0613b0a44e5dd6a7f5ca98459853/selenium-3.141.0-py2.py3-none-any.whl (904kB)
    100% |████████████████████████████████| 911kB 68kB/s
Requirement already satisfied: urllib3 in /usr/lib/python3.6/site-packages (from selenium)
Installing collected packages: selenium
Successfully installed selenium-3.141.0

もうちょっとでπだ

ChromeDriverと同じフォルダにサンプルプログラムを作成
GettingStartedのをそのまま
ただしパスが通っていないのでwebdriver.Chrome()でパスを指定

import time
from selenium import webdriver

driver = webdriver.Chrome('./chromedriver')
driver.get('https://www.google.com/')
time.sleep(5)
search_box = driver.find_element_by_name("q")
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5)
driver.quit()

あっさり成功
じゃこれでいいか

quit()を呼んだところでブラウザが閉じる
呼ばなければそのままになるので続きを人間が操作することもできるな
自動化ツールとしてはそれもありそうだ

なお毎回認証プロキシのアカウントを聞かれると面倒なんだがっていうか
自動テストでそれは困るだろう
パスワード記憶させればいいような気がするけどどうするんだっけ?

Macでもやってみる
あっさり成功
こっちはカレントディレクトリにパスが通っているのでサンプルのまんま