Seleniumとは、Webアプリケーションのテストを自動化するためのツールです。
ざっくり言うと、Webブラウザで実際は人が行う操作を、プログラミングによって自動で行ってくれるものです。
私はテストとしてだけでなく、Webスクレイピングでは取得できないようなものを取ってくるのに使用したりもしています。
Seleniumでできる様々な操作を以下に記述しました。
自分用の覚書きとして。
(※Python編とありますが、他言語での記事作成の予定はありません。)
Seleniumとは、Webアプリケーションのテストを自動化するためのツールです。
ざっくり言うと、Webブラウザで実際は人が行う操作を、プログラミングによって自動で行ってくれるものです。
私はテストとしてだけでなく、Webスクレイピングでは取得できないようなものを取ってくるのに使用したりもしています。
Seleniumでできる様々な操作を以下に記述しました。
自分用の覚書きとして。
(※Python編とありますが、他言語での記事作成の予定はありません。)
pipで簡単インストール。
$ pip install selenium
とりあえずwebdriverがあればなんとかなる。
from selenium import webdriver
# Chrome driver = webdriver.Chrome() # FireFox driver = webdriver.Firefox()
driver.quit()
以下、Chromeの場合の記述になります。(FireFoxでもそんなに変わらないはず。)
driver.get("https://www.awawaweb.com/") # 前の画面に戻る(history back) driver.back()
# IDで取得 element = driver.find_element_by_id("idname") # name属性で取得(inputタグ等) element = driver.find_element_by_name("username") # XPathで取得 driver.find_element_by_xpath("//input[@value='Cat']") # 要素内のテキストを取得 text = driver.find_element_by_id("idname").text()
1.Chromeのデベロッパツールにて、Elementsの要素を右クリック → Copy → Copy XPath
2.Chromeのデベロッパツールにて、Consoleに下記のように記述
$x('//div[@id="idname"]/div/h2')
# 要素クリック driver.find_element_by_id("button").click() # リンククリック driver.find_element_by_link_text("Google").click()
# テキスト入力 driver.find_element_by_name("username").send_keys("awawa") # チェックボックスの選択 driver.find_element_by_xpath("//input[@name='animal' and @value='Cat']").click() # セレクトボックスの選択 driver.find_element_by_xpath("//select[@name='todoufuken']/option[text()='埼玉県']").click() # ファイルアップロードにファイル指定 driver.find_element_by_id("uploadfile").send_keys("[アップロードするファイルパス]")
driver.execute_script('document.getElementById("inner").innerHTML = "Bye";')
driver.set_window_size(1280,800)
# フレーム内のページに移動 driver.switch_to.frame("content_ifr") # driverがフレーム内のページそのものになっているので、driverに対して直接操作する driver.execute_script('document.getElementById("inner").innerHTML = "inner Bye";') # 元(親)のページに移動 driver.switch_to.default_content()
driver.implicitly_wait(10) # 普通にtime.sleepでやっても良い time.sleep(2)
source = driver.page_source
driver.save_screenshot("[保存先ファイルパス]")
Seleniumの習得には、下記の書籍を使用しました。
Kindle Unlimitedの読み放題対象にもなってます。