はじめに
前回までの記事で、urllib編、BeautifulSoup編、requests編と行ってきましたが、今回はブラウザを使った操作が可能なライブラリSeleniumについてメモしていきます。
このSeleniumを使えば、スクレイピングも然り、GUI部分のテストなんかも自動化が可能になるのでぜひ使えるようになっておきたいライブラリとなります。
実務で使うことを考えるとLinux環境で作ったほうがいいかもしれませんが、ここではWindows10でのSelenium+Pythonの方法をやっていきます。
Seleniumのインストール
pip install selenium
インストール後の一覧を確認
pip freeze -l
ブラウザのドライバインストール
この記事ではChromeを使いますが、他のブラウザで行いたい場合は他のドライバを入れることになります。
https://sites.google.com/a/chromium.org/chromedriver/
1.実装
本ブログ「tech1000+」とGoogleで検索し、検索結果のページをのスクショを撮るプログラム
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
driver = webdriver.Chrome("F:\python_prd\chromedriver\chromedriver.exe")
driver.get("https://google.co.jp")
text = driver.find_element_by_name("q")
text.send_keys("tech1000+")
text.submit()
driver.save_screenshot("save.png")
driver.quit()
結果
解説
seleniumをインポート
from selenium import webdriver
Seleniumに対しドライバのパスを教えてあげる
driver = webdriver.Chrome("*******\chromedriver.exe")
googleにアクセス。
フォーム部分を取得し、「tech1000+」を入力
送信。
driver.get("https://google.co.jp")
text = driver.find_element_by_name("q")
text.send_keys("tech1000+")
text.submit()
スクリーンショットを保存
ブラウザを閉じる。
driver.save_screenshot("save.png")
driver.quit()
上記プログラムを実行すると、ブラウザが動き無事に「save.png」でスクリーンショットが保存されているのが確認できました。
では次は上記と全く同じことをブラウザが開かないように(ヘッドレスモード)でやってみます。
2.ヘッドレスモードでSeleniumを使う
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome(chrome_options=options, executable_path="F:\python_prd\chromedriver\chromedriver.exe")
driver.get("https://google.co.jp")
text = driver.find_element_by_name("q")
text.send_keys("tech1000+")
text.submit()
driver.save_screenshot("save.png")
driver.quit()
解説(差分のみ)
オプションを指定し、オプションの引数に「–headless」を追加。
ドライバを読み込む際の引数にオプションを追加する。
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome(chrome_options=options, executable_path="F:\python_prd\chromedriver\chromedriver.exe")
1でやったことと同じことをブラウザを開かずに行うことができました。
さいごに
GUIのテストをコードで作っておけば、テスト作成の工数は若干増えたとしてもリグレッションテストのときなんかに有能さを発揮できそうですね。
他にも、クーロンを設定し任意の情報を定期的に収集したり、自動でツイートしたり、いろいろ思いつきます。
Seleniumで使うことができるメソッドがいろいろあるので、やりたいことと合わせて調べてみるのがオススメです。