Seleniumでcolorのテストを極める

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)
スポンサーリンク
おすすめの記事