seleniumを使ってみよう
ブラウザベースのテストツールにseleniumというものがあります。ざっくり説明すれば、chromeやFirefoxの操作を自動化するツールです。しかもpython、ruby等さまざまなプログラミング言語から制御できるというお手軽さ。今回はWindows + Visual Studio Code + python3の環境で簡単な動作を交えて解説します。
VSCodeで任意のフォルダをプロジェクトフォルダとし、seleniumからchromeを制御するためのchromederiverをダウンロードして任意のフォルダへ設置します。
あわせてコマンドプロンプトから
1 | pip install selenium |
を実行してpython用のseleniumをインストールします。これで基本的な準備は終わりました。
今回は、googleでキーワード検索結果のスクリーンショットを5ページぶん撮影する、という操作を自動化してみます。以下がそのプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import os from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By driver = webdriver.Chrome("./chromedriver.exe") #chromedriverのパスを指定 driver.get("https://www.google.com/") # googleを開く driver.find_element_by_css_selector('input[name="q"]').send_keys("sterfield") # 検索キーワードを指定 driver.find_element_by_css_selector('input[name="q"]').send_keys(Keys.RETURN) # ENTERキー押下で検索実行 for i in range(0, 4): # 検索結果ページの「次へ」リンクが表示されるまで最大10秒待機する wait = WebDriverWait(driver, 10) next_page = wait.until(EC.element_to_be_clickable((By.ID, "pnnext"))) # スクリーンショット用のファイル名を生成 basename = "screen_shot{0:02d}.png".format(i) filename = os.path.join(os.path.dirname(os.path.abspath(__file__)), basename) driver.save_screenshot(filename) # 次の検索結果ページへ遷移する next_page.click() driver.quit() |
これを実行すると専用のプロファイルを持ったchromeが勝手に起動して、あっという間に検索、スクリーンショット撮影を終わらせてくれます。pythonのプログラムがあるフォルダにスクリーンショットも保存されました。
今回はデモなので踏み込んだ使い方はしていませんが、サイト内全ページのスクリーンショット撮影自動化や、サイトの負荷テストなどかなり広範囲に応用が利くと思います。
Author Profile
スターフィールド編集部
SHARE