2019年9月17日火曜日

Pythonでselenium 要素の存在を判定する方法

Seleniumで存在しない要素を使うと、Message: Unable to locate element:xxx のエラーが起きます。
事前に要素の存在をチェックしておきたいですね。

たまに以下のようなtryで例外処理をする方法をみかけますが、実はlenでも判定することはできます。

try:
    driver.find_element_by_id('test').click()
except:
  # 存在しない
ポイントはdriver.find_element_by_idの代わり、driver.find_elements_by_idを使います。一見同じように見えますが、前者の場合は要素が存在しない時に異常が発生します。後者なら、要素が存在しなくでも異常が発生しないです。
具体的に以下ように使います。

if len(driver.find_elements_by_id('test') > 0) :
    ele = driver.find_element_by_id('test')
 # 存在する時の処理
else:
  # 存在しない時の処理
driver.find_elements_by_idの他、driver.find_elements_by_namedriver.find_elements_by_xpathdriver.find_elements_by_class_namedriver.find_elements_by_css_selectordriver.find_elements_by_link_textdriver.find_elements_by_tag_nameなどなどが存在します。基本的にfind_element_by_xxとセットとなっています。

0 件のコメント:

コメントを投稿