Seleniumを使ったサイトのドロップダウンメニュー、ラジオボタン、チェックボックスの操作方法についてご紹介
準備
Seleniumの導入
Seleniumのライブラリインストール、Chromedriverのダウンロードを行ってください。
詳しくはこちらの記事ご参照ください
対象のページを開く
本ページにサンプルを用意しましたので「https://ds-note.net/coding/selenium_operation/」を指定してみましょう。
from selenium import webdriver
driver_path = 'C:/Users/XXXXX/chromedriver.exe' #Chromedriverの保存先を指定
#v3系の場合
driver = webdriver.Chrome(executable_path = driver_path)
#v4以降の場合
service = Service(executable_path = driver_path)
driver = webdriver.Chrome(service = service)
url = 'https://ds-note.net/coding/selenium_operation/' #対象のURLを指定
res = driver.get(url)
ドロップダウンメニューを選択する
ドロップダウンメニューサンプル
ドロップダウンメニューを探す
対象のドロップダウンメニューを探します。XPathの取得方法は下記の記事を参考にしてください。
今回は対象の要素を「id=”dropdown”」としてidで属性を設定していますので、XPathではなく、idを指定して要素を選択してみましょう。
<select name="dropdown_sample" id="dropdown">
<option value="list1">リスト1</option>
<option value="list2">リスト2</option>
<option value="list3">リスト3</option>
<option value="list4">リスト4</option>
</select>
値を選択する
ドロップダウンメニューはリスト1~リスト4まで存在します。上から3番目を選択する場合は「0,1,2」となり「.select_by_index(2)」で指定します。
from selenium.webdriver.support.select import Select
#selenium ver3系の場合
dropdown = driver.find_element_by_id('dropdown')
#selenium ver4系の場合
from selenium.webdriver.common.by import By
dropdown = driver.find_element(By.ID, "dropdown")
#ドロップダウンを選択する
select = Select(dropdown) #ドロップダウンメニューが選択された状態
#値を選択する
select.select_by_index(2) # 3番目のoptionタグを選択状態に
ラジオボタン/チェックボックスを選択する
ラジオボタン/チェックボックスはドロップダウンメニューと異なり、selectを使わずに要素をクリックすることになります。
ラジオボタンを選択してクリック
サンプル
value1value2
value3
<input type="radio" name="radio_sample" value="value1">value1
<input type="radio" name="radio_sample" value="value2">value2
<input type="radio" name="radio_sample" value="value3">value3
操作
ラジオボタンの2つ目(ページ内のinputの3つ目)を選択する
#ver3系の場合
driver.find_element_by_xpath("/html/body/div[1]/div[2]/div/main/article/div/input[2]").click()
#ver4系の場合
driver.find_element(By.XPATH, "/html/body/div[1]/div[2]/div/main/article/div/input[2]").click()
チェックボックスを選択する
サンプル
value1value2
value3
<input type="checkbox" name="checkbox_sample" value="1">value1
<input type="checkbox" name="checkbox_sample" value="2">value2
<input type="checkbox" name="checkbox_sample" value="3">value3
操作
チェックボックスの2つ目(ページ内のinputの6つ目)
#ver3系の場合
driver.find_element_by_xpath("/html/body/div[1]/div[2]/div/main/article/div/input[5]").click()
#ver4系の場合
driver.find_element(By.XPATH, "/html/body/div[1]/div[2]/div/main/article/div/input[5]").click()