要素が存在するかどうかの確認は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])
ログイン状態の確認、特定ページにいるかのチェックなど
今いるページが未ログインなのか、特定ページにいるのかなど、特徴のある要素の存在チェックで確認できます。
コメント