質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.58%

python seleniumで要素は見つかったがクリックできないです。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 6,099

score 35

python seleniumで要素は見つかったのでクリックしたい

こんにちは。
python seleniumでhtml中の「<a href="/create.html" id="menu_edit">作る</a>」をクリックしたいです。
「driver.find_element_by_id('menu_edit').click()」でクリックさせたのですが、ページが切り替わりません。エラーはでないので、要素は見つかっているのだと思います。

リンクが「a href="/create.html」という相対パスなのが悪いのでしょうか?
driver.get('https://base.next-engine.org/users/sign_in/')とは異なるURLに移動しているのが原因で相対パスではページ移動できないのでしょうか?

対処方法を教えて頂ければと思います。
よろしくお願いします。

発生している問題・エラーメッセージ

エラーは発生していません。

該当のソースコード(html)

<div class="navbar navbar-fixed-top">
    <div class="navbar-inner">
        <a class="logo" title="" href="/" target="_self" style="float: left;padding-right: 40px;">
            <img alt="#" src="resource/img/NE_customDL_Hlogo.png" style="height:38px;">
        </a>
        <a data-target=".navbar-responsive-collapse" data-toggle="collapse" class="btn btn-navbar">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </a>



        <div class="nav-collapse collapse navbar-responsive-collapse">
            <ul class="nav">

                <li class='active'>
                    <a href="/top.html">トップ</a>
                </li>

                <li class=''>
                    <a href="/download.html">ダウンロード・アップロード</a>
                </li>


                <li class=''>
                    <a href="/create.html" id="menu_edit">作る</a>
                </li>

                <li class='dropdown'
                    style=''>
                    <a data-toggle="dropdown" class="dropdown-toggle">
                        設定
                        <span class="caret"></span>
                    </a>
                    <ul class="dropdown-menu">

                        <li class=''>
                            <a href="/setting_item_name.html">項目名の設定</a>
                        </li>

                        <li class=''>
                            <a href="/setting_format.html">出力形式パターンの設定</a>
                        </li>

                        <li class=''>
                            <a href="/setting_table.html">条件パターンの設定</a>
                        </li>

                        <li class=''>
                            <a href="/setting_custom.html">オリジナル項目の設定</a>
                        </li>
                    </ul>
                </li>


                <li class=''>
                    <a href="/history.html">履歴</a>
                </li>

                <li class=''>
                    <a href="/setting_plan.html">料金プラン</a>
                </li>

                <li>
                    <a href="#" target="_blank" id="manual_link">マニュアル</a>
                </li>
            </ul>
        </div>




    </div>
</div>

試したこと(pythonコード)

from selenium import webdriver
from time import sleep
from selenium.common.exceptions import NoSuchElementException

driver = webdriver.Chrome("chromedriver.exe")

driver.get('https://base.****.org/users/sign_in/') 
elem_username = driver.find_element_by_id('user_login_code') 
elem_username.send_keys('*****')
elem_password = driver.find_element_by_id('user_password')
elem_password.send_keys('*****')
driver.find_element_by_name('commit').click()

driver.find_element_by_xpath('//*[@id="footer-app-launcher"]/div/div/div[2]/div/ul/li[8]').click()
sleep(5)
driver.switch_to.window(window_name=driver.window_handles[1])
driver.maximize_window()

#≪要素があるかどうかの確認≫
try:
    element = driver.find_element_by_id('menu_edit')                               
except NoSuchElementException:
    print("要素がありませんでした...")
else:
    print("要素がありました。")   

sleep(5)
driver.find_element_by_id('menu_edit').click()

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

Windows10
python3
jupyter notebook

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Tochan

    2019/12/10 13:51

    クリックした後は別タブではなくて、2番目のタブのまま次ページに遷移しています。driver.find_element_by_id('menu_edit').click() でクリックした後、一瞬遷移する様なそぶりを見せますが、次ページに遷移してくれません。
    実際のサイトは次ページは重たいらしくクリックしてから、しばらく表示にまで時間が掛かります。それも原因だったりするのでしょうか?

    キャンセル

  • shirai

    2019/12/10 13:58

    では遷移後のsleepの時間を60秒にしてみてください。それで重いせいかどうか判断できるはずです。

    キャンセル

  • Tochan

    2019/12/10 19:03

    60秒にしてもやはり同じです。一瞬だけクリックした感じになって、すぐ停止してしまいました。

    キャンセル

回答 1

check解決した方法

0

最後にクリックできなかったのですが、2回繰り返したところ次ページに遷移しました。ありがとうございました。


sleep(5)
driver.find_element_by_id('menu_edit').click()
sleep(2)
driver.find_element_by_id('menu_edit').click()


投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.58%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る