HTML5で指定可能type属性rangeについて、Seleniumでテストするためのメモ。
valueを指定する際は日時・時間関係と同じやり方でOK
ターゲットとなるtype属性(range)
<input name="range" type="range">の場合
driver.execute_script('document.getElementsByName("range")[0].value="2";')
数値を指定すればOK
注意!!
min(最小値)、max(最大値)、step(選択可能な倍数・ステップ数)それぞれの属性の条件に該当しない値を割り当てようとしてもエラーしない。
例えばstep="3"と設定したところにseleniumで"2"を指定してもエラーせず、"3"扱いとなるなる。
テストデータ作成サイドの問題ではあるんですが、念のため下記のようにチェックしておいた方が無難かも
#テストデータ
test_data = 2
#rangeの要素を取得
elem = driver.find_element_by_name("range")
#min,max,stepの条件を破っていたらError出力、そうでなければrangeを選択
if elem.get_attribute("min") != "" and int(elem.get_attribute("min")) > test_data):
print("Error:入力項目「range」のテストデータは、min属性の数値を下回っています")
elif elem.get_attribute("max") != "" and int(elem.get_attribute("max")) < test_data):
print("Error:入力項目「range」のテストデータは、max属性の数値を上回っています")
elif elem.get_attribute("step") != "" and (int(elem.get_attribute("step")) % test_data) != 0):
print("Error:入力項目「range」のテストデータは、はstep属性の数値で割り切れません")
else:
driver.execute_script('document.getElementsByName("range")[0].value="'+test_data+'";')