HTML5で指定可能type属性rangeについて、Seleniumでテストするためのメモ。
valueを指定するにはsend_keys関数で入力してもいいし、execute_scriptでJavaScript経由で入力してもいい。
カラーコード(#000000とか)で指定する必要があり、WhiteやBlackなど英単語では指定できない。
ターゲットとなるtype属性(color)
<input name="color" type="color">の場合
driver.find_element_by_name("color").send_keys("#fff000")
または、
driver.execute_script('document.getElementsByName("color")[0].value="#fff000";')
※#fff000で黄色を指定してます
注意
カラーコードでないとうまく動かないので、Whiteとか、有効なカラーコードであるかを判定してあげた方が親切かなーと思います。
とりあえず下記3点をチェックし、有効なカラーコードでなければエラー出力するようにしてみます。
- テストデータが7文字ではない
- 1文字目が#ではない
- 2文字目以降が16進数で表現できる範囲ではない(0~9A~F)
#テストデータ
test_data = #fff000
#1文字目#(シャープ)、2~7文字目は16進数で表現できる範囲でないとエラー
if (len(test_data) != 7):
print("Error:入力項目「color」のテストデータ(" + test_data + ")は、7文字である必要があります")
elif (test_data[:1] != "#"):
print("Error:入力項目「color」のテストデータ(" + test_data + ")は、1文字目が#ではありません")
elif not (re.match(".*[0-9A-F].*",test_data[1:].upper())):
print("Error:入力項目「color」のテストデータ(" + test_data + ")は、2文字目以降が16進数で表現できる範囲にありません")
# execute_scriptでも入力可
#driver.execute_script('document.getElementsByName("color")[0].value="' + test_data + '";')
driver.find_element_by_name("color").send_keys(test_data)