96781


スポーツクラブJEXERサイトに Selenium でログインを試みていますがログインできません。  
ログインURLは以下となります。

○トップページ ⇒ ログインボタンを押下  
<https://www.jexer.jp/info/index.html>

○ログインページ  
<https://jresports.e-atoms.jp/JEXERWebUser/Account/LogIn?ReturnUrl=%2fJEXERWebUser%2f>

Chromeの「検証」や「ページのソースの表示」では、「ログインID」name="UserName"や  
「パスワード」name="Password" の要素が HTMLで見えます。

しかしながら、Seleniumのプログラムを起動し、driver.page_source
のHTMLを確認したところ、「ログインID」「パスワード」のHTML・タグが表示されません。

当初、iframe を疑い、iframe
で別のフレームに移動し、HTMLを確認しましたが、全く別のページが表示されました。つまり、iframeが原因ではありませんでした。

Seleniumを使ってdriver.page_sourceを確認したところ、Webサイトにアクセスした際、JavaScriptなどで
全く別のページ（HTML）が表示されているように見えます。

その為、  
・driver.find_element で Class名を指定して要素取得  
・driver.find_element で XPATH名（フルパス）を指定して要素取得  
しても、HTML内に要素が表示されていない為、取得できません。

このJEXERサイトのように、Chromeブラウザに表示されるHTMLと、Seleniumが取得したHTMLが全く異なる場合、どのような対処をすればよいか分からず、何日か悩んでおります。

どなたかよい対処方法のお知恵を拝借できないでしょうか。  
宜しくお願い致します。


CC BY-SA 4.0
2023-11-14T23:16:18.213
96779
2023-11-15T01:23:31.043
60421
question
python selenium
Python Selenium で Chromeブラウザ「検証」モードで表示されているにも関わらず 要素が見つからない


当該のリンクは以下の様になっています。`target="_blank"` が指定されていますので、ログイン画面は別ウィンドウ(タブ)に表示されます。

[code]

    <a href="https://jresports.e-atoms.jp/..." target="_blank">
        <img src="./images/btn_c.gif" alt="ログイン">
    </a>
    
[/code]

なので、`driver.switch_to.window()` でログイン画面に移動する必要があります。

[code]

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    import time
    
    url = 'https://www.jexer.jp/info/index.html'
    
    driver = webdriver.Chrome()
    driver.get(url)
    login_btn = driver.find_element(By.CSS_SELECTOR, 'ul.btn > li > a')
    login_btn.click()
    
    time.sleep(3)
    
    driver.switch_to.window(driver.window_handles[1])
    print(driver.page_source)
    
[/code]


CC BY-SA 4.0
2023-11-15T01:23:31.043
96781
2023-11-15T01:23:31.043
47127
96779
answer