🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

12911閲覧

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

Tochan

総合スコア56

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2019/12/09 08:37

編集2019/12/23 10:10

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shirai

2019/12/09 15:09

driver.switch_to.window(driver.window_handles[1])でどうですか?
Tochan

2019/12/09 16:05

driver.switch_to.window(window_name=driver.window_handles[1])で2番目のタブをハンドルすることはできています。要素のクリックができないのです。なぜでしょうか?
shirai

2019/12/09 17:38

ではハンドルを切り変えた後にもう一度ページソースを出力させてみてください。
Tochan

2019/12/10 00:46

ページソースは↓で出力できました。「<a href="/create.html" id="menu_edit">作る</a>」と取得したい要素は入っています。 ------- <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="http://ec-doc.net/customdata/manual.pdf" target="_blank" id="manual_link">マニュアル</a> </li> </ul> </div> </div> </div> -------
shirai

2019/12/10 03:38

driver.find_element_by_id('menu_edit').click()のあと、さらに別タブが開く仕様ではないですか?
Tochan

2019/12/10 04:51

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

2019/12/10 04:58

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

2019/12/10 10:03

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

回答1

0

自己解決

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


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


投稿2019/12/10 13:51

Tochan

総合スコア56

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問