【Selenium】要素の有効・無効(disabledの有無)を判定する:is_enabled()
2022.04.13 /

本記事ではPythonのSeleniumにおける、要素の有効・無効(disabledの有無)を判定する方法について解説していきます。
Seleniumによるブラウザの自動化を行っていると、対象の要素が有効か無効かを判別して、処理を分けたいことがあります。Seleniumに用意されているis_enabled()メソッドを使うことで、要素の有効・無効を判別することができます。
本記事を通して、is_enabled()の使用方法の理解を深めましょう。
要素の有効・無効とは
要素の有効・無効とは、画面上に要素が表示されている状態で非活性化するかどうかということです。
要素が有効であるということは、通常のとおり要素が表示されている状態です。
要素が無効であるということは、非活性化されている状態です。
要素を無効化するにはdisabled属性をその要素に追加します。disabled属性をよく利用する要素はbutton要素やinput要素です。
例えばbutton要素の有効・無効にした表示がどうなるのか以下に記します。
<button type="submit" class="btn btn-success" name="button1">BUTTON1</button>
<button type="submit" class="btn btn-success" name="button2" style="margin-left: 10px;" disabled>BUTTON2</button>

上図のようにdisabled属性を追加すると、半透明になり非活性化していることがわかりやすくなります。
Seleniumによる要素の有効・無効の判別
is_enabled()とは
is_enabled()メソッドはSeleniumで利用できるメソッドの1つであり、要素が有効か無効かどうかを確認するのに使用されます。
WebElement.is_enabled()
WebElementオブジェクトはfind_element_by_*メソッドで生成されるオブジェクトです。find_element_by_*メソッドやWebElementオブジェクトについて詳しくは以下記事をご参照ください。

【Python】Selenium:ブラウザ操作して静的・動的(Ajax、javascript)ページから情報を取得
is_enabled()の返り値はTrueまたはFalseです。要素が有効の場合はTrue、要素が無効(disabled属性)の場合はFalseが返されます。
is_enabled()の使用例を以下に記します。
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://office54.net")
element = driver.find_element_by_css_selector ("#main")
print(element.is_enabled())
is_enabledによる有効・無効の判別方法
is_enabled()による要素の有効・無効の判別方法を解説していきます。
要素の有効・無効の判別にはis_enabled()とif文を以下のように組み合わせて使用します。
from selenium import webdriver
chromedriver = 'chromedriver.exe'
driver = webdriver.Chrome(executable_path=chromedriver)
element= driver.find_element_by_css_selector("#main")
if element.is_enabled() == True:
# 要素が有効だった場合の処理
else:
# 要素が無効だった場合の処理
上記のようにコードを記入することで要素の有効・無効を判定することができます。
まとめ
本記事「【Selenium】要素の有効・無効(disabledの有無)を判定する:is_enabled()」はいかがでしたか。
ぜひ本記事で学んだことを活かして、Seleniumによるブラウザの自動化を進めていってください。