Webサイトのログインを押したあとに出てくるポップアップにまたログインボタンがあるのですが、そのログインボタンを検証してid xpathを取得し、ボタンを押す操作を実行するとタイトルのエラーが出てしまいます。
どうすればいいのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
ポップアップがiframe
であるためだと思います。
switch_to_frame
でiframe
の中身を参照するようにしてからなら取得できるかと思います。
下記にサンプルを残しておきます。
要素は全てid
で指定していますが、適宜Xpath
に読み替えても動作するかと思います。
python
1 2from selenium import webdriver 3from selenium.webdriver.common.by import By 4from selenium.webdriver.support.ui import WebDriverWait 5from selenium.webdriver.support import expected_conditions as EC 6 7# Chromeでdriver作成 8driver = webdriver.Chrome() 9 10try: 11 12 # https://cureco.jp/を開く 13 driver.get('https://cureco.jp/') 14 15 # ログインボタンが描画されるまで最大30秒待つ 16 WebDriverWait(driver, 30).until( 17 EC.presence_of_element_located((By.ID, 'link_login'))) 18 19 # ログインボタンを取得 20 login_button = driver.find_element_by_id('link_login') 21 22 # ログインボタンを押下 23 login_button.click() 24 25 # ポップアップが表示されるのを待つ 26 WebDriverWait(driver, 30).until( 27 EC.presence_of_element_located((By.ID, 'url_dialog_iframe'))) 28 29 # ポップアップはiframeなのでdriverの向き先を切り替える 30 iframe = driver.find_element_by_id('url_dialog_iframe') 31 driver.switch_to_frame(iframe) 32 33 # ポップアップ中のログインボタンが描画されるまで最大30秒待つ 34 WebDriverWait(driver, 30).until( 35 EC.presence_of_element_located((By.ID, 'login'))) 36 37 # ポップアップ中ログインボタン取得 38 pop_login_button = driver.find_element_by_id('login') 39 # クリック 40 pop_login_button.click() 41 42 # iframeから抜ける場合は以下を実行 43 # driver.switch_to.default_content() 44 45except Exception as e: 46 print('Error', e) 47 48finally: 49 # ドライバを終了する 50 driver.quit() 51
投稿2020/08/13 00:48
総合スコア2411
0
どんなWebサイトかも不明なためなんともいえませんが、ポップアップするとのことなのでスクリプト実行時にはまだ表示されていない要素なのでは?
ログイン後にsleep()
等でしばらく待ってみるといいかもしれません。
python
1from time import sleep 2 3# ...省略 4 5sleep(5)
投稿2020/08/13 00:09
総合スコア2411
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/13 01:12