目的
複数選択可能なselect要素を操作してみる
サンプルコード
対象とするhtmlの抜粋
<select name="msel" size="5" multiple>
<option value="demo1">デモ1</option>
<option value="demo2">デモ2</option>
<option value="demo3">デモ3</option>
<option value="demo4">デモ4</option>
<option value="demo5">デモ5</option>
</select>
コード
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait, Select
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome('C:\\Dev\\tool\\webdriver\\chromedriver.exe')
driver.get('http://localhost:8080/')
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.NAME, 'msel'))
)
elm = driver.find_element_by_name('msel')
# multiple かどうか
print(Select(elm).is_multiple)
# value で選ぶ
element = Select(elm).select_by_value('demo1')
# 表示テキストで選ぶ
element = Select(elm).select_by_visible_text('デモ4')
elm = driver.find_element_by_name('msel')
# 最初に選択されている項目のみ
em = Select(elm).first_selected_option
print(em.get_attribute('value') + ':' + em.get_attribute('text'))
# 選択されている項目を全て
em = Select(elm).all_selected_options
for item in em:
print(item.get_attribute('value') + ':' + item.get_attribute('text'))
time.sleep(2) # 表示確認用のwait
finally:
driver.quit()