Selenium 要素が存在するか、存在しないか、チェックはfind_elements()がいいみたい python

selenium find_elements() len() 要素が存在するかチェック python

要素が存在するかどうかの確認はfind_element()で・・と思っていたら例外が発生するのが仕様だそうで。

スポンサーリンク

find_element()だと例外発生する

find_element()だと下記のような例外が出ました。

 raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="loginbtn"]"}
  (Session info: chrome=108.0.5359.124)
Stacktrace:
#0 0x55a55306c2a3 <unknown>
#1 0x55a552e2af77 <unknown>
#2 0x55a552e6780c <unknown>
...

find_elements()で配列を返し、配列数len(elems)でチェック

ターゲット要素をfind_elements()で検索し、返ってきた配列をif len(elems): で条件分岐
今回はログインページへのボタンがある=未ログイン、という想定で。

#ログインページへボタンを検索
xpath = '//*[@id="loginbtn"]'
elms = driver.find_elements(By.XPATH, xpath)

if len(elms):
  #ログインページへボタンがあるので、未ログイン
  #ログインする ログインボタンオブジェクト渡し、ページ遷移などする関数
  do_login(driver, elems[0])

ログイン状態の確認、特定ページにいるかのチェックなど

今いるページが未ログインなのか、特定ページにいるのかなど、特徴のある要素の存在チェックで確認できます。

コメント

タイトルとURLをコピーしました