【Selenium】チェックボックスなどの要素が選択済みか判別:is_selected()

時計 2022.04.14 / 時計

【Selenium】チェックボックスなどの要素が選択済みか判別:is_selected()

本記事ではPythonのSeleniumにおける、要素(チェックボックス、ラジオボタン)が選択済み判別する方法について解説していきます。

HTMLには複数の選択肢の中から選択可能な要素として、チェックボックスやラジオボタンが存在します。

これら要素が選択済みかどうか判別する方法として、Seleniumにはis_selected()メソッドが用意されています。

本記事を通して、チェックボックスやラジオボタンでチェック済みかどうかを判別する方法を学んでください。

HTML:選択可能な項目を表示する要素

HTMLには複数の選択肢の中から選択可能な要素として、チェックボックスやラジオボタンが存在します。

チェックボックスはinputタグを使用し、type属性に「checkbox」を指定することで作成できます。

<input type="checkbox">

上記タグにvalueやname、checkedなどの属性を追加して実装していきます。

<label>
    <input type="checkbox" name="checkbox" value="python">
    Python
</label>
<label>
    <input type="checkbox" name="checkbox" value="django">
    Django
</label>
<label>
    <input type="checkbox" name="checkbox" value="selenium">
    Selenium
</label>
HTML:チェックボックス

ラジオボタンはinputタグを使用し、type属性に「radio」を指定することで作成できます。

<input type="radio">

上記タグにvalueやname、checkedなどの属性を追加して実装していきます。

<label>
    <input type="radio" name="radio" value="python">
    Python
</label>
<label>
    <input type="radio" name="radio" value="django">
    Django
</label>
<label>
    <input type="radio" name="radio" value="selenium">
    Selenium
</label>
HTML:ラジオボタン

これら要素から選択された選択肢を判別する方法について次項から解説していきます。

またHTMLにはselectタグで生成されるセレクトボックスも存在します。セレクトボックスの選択や取得、解除については以下記事をご参照ください。

要素がチェック済みか判別

is_selected()メソッドとは

Seleniumには要素がチェック済みかどうかを判別するためのメソッドとしてis_selected()メソッドが用意されています。

WebElementオブジェクトに対して使用し、TrueまたはFalseの2値を返します。

is_selected()メソッドはcheckboxやradioボタンが選択されているかどうかの確認で主に使われます。

構文

WebElement.is_selected()

例えば次のようにチェックボックスがあるとします。

<label>
    <input type="checkbox" name="confirm" value="confirm" id="confirm">
    確認しました
</label>

上記のinput要素のWebElementオブジェクトを生成して、チェックボックスがチェックされているか確認するには次のように記述します。

element = driver.find_element_by_id("confirm")
status = element.is_selected()

チェックボックスがチェック済みなら変数statusにはTrueが、チェックされてなければFalseが格納されます。

is_selected()メソッドの利用法

実際にSeleniumでブラウザを起動して、チェックボックスがチェック済みか確認するコードを見てみましょう。

# https://office54.net
<html>
    <body>
        <h1>OFFICE54</h1>
        <div class="main">
            <label>
                <input type="checkbox" name="confirm" value="confirm" id="confirm">
                確認しました
            </label>
        </div>
    </body>
</html>

上記サイトからid=confirmのチェックボックスがチェックされたか判別してみます。

from selenium import webdriver

chromedriver = 'chromedriver.exe'
driver = webdriver.Chrome(executable_path=chromedriver)

driver.get("https://office54.net")
element = driver.find_element_by_id("confirm")
status = element.is_selected()
print(status)
# 出力:TrueまたはFalse

このようにis_selected()メソッドを利用すると、非常に簡単にチェックボックスやラジオボタンが選択されているかどうかを判別できます。