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

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

新規登録して質問してみよう
ただいま回答率
85.48%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

selenium

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

Q&A

1回答

2218閲覧

pythonのseleniumでno such elementエラーになります。

Tochan

総合スコア56

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

selenium

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

0グッド

0クリップ

投稿2019/12/07 09:02

編集2019/12/23 10:09

前提・実現したいこと

こんにちは。
pythonのseleniumでhtml上の「<a href="/download.html">ダウンロード・アップロード</a>」をクリックしたいのですが、色々と試しましたが要素が見つかりませんのエラーがでます。

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

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"link text","selector":"ダウンロード・アップロード"} (Session info: chrome=78.0.3904.108)

該当のソースコード(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>

試したこと

from selenium import webdriver from time import sleep 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(10) driver.find_element_by_link_text('ダウンロード・アップロード').click()

↓「<a href="/download.html">ダウンロード・アップロード</a>」をクリックしたいので↓も試しましたが同じエラーで駄目でした。。
driver.get(driver.current_url + '/download.html')
driver.find_element_by_partial_link_text('ダウンロード').click()
driver.find_element_by_partial_link_text(u'ダウンロード・アップロード').click()
driver.find_element_by_xpath('/html/body/div[4]/div/div/ul/li[2]/a').click()
continue_link = driver.find_element_by_partial_link_text(u'ダウンロード・アップロード')
continue_link.click()

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

python3
windows10
jupyter notelooks使用

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

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

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

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

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

shirai

2019/12/07 12:37

開発者ツールのConsoleに以下を打ち込むと何が出てきますか? document.getElementsByTagName('frame') document.getElementsByTagName('iframe')
Tochan

2019/12/07 14:54

グーグルクローム設定≫その他のツール≫ディベロッパーツール≫Consoleで 目マーククリック(Create live expression)のExpressionに入力でいいでしょうか? 両方「HTMLCollection []」とでてきます。 確認お願いいたします。
otn

2019/12/07 16:00

日本語のエンコーディングが違っているとか。
otn

2019/12/07 16:02

ああ、フレーム使っているページなんですか?
shirai

2019/12/08 14:53

いくつか試していただいたものは全てNoSuchElementExceptionのエラーですか?
Tochan

2019/12/09 02:27

NoSuchElementExceptionのエラーになります。
Reach

2020/01/01 21:02

【サイトルート相対パス】では?
guest

回答1

0

以下コードで 如何でしょうか?

Python

1from selenium import webdriver 2from time import sleep 3from urllib.parse import urljoin 4 5driver = webdriver.Chrome("chromedriver.exe") 6driver.get('https://base.*****.org/users/sign_in/') 7 8elem_username = driver.find_element_by_id('user_login_code') 9elem_username.send_keys('*******') 10elem_password = driver.find_element_by_id('user_password') 11elem_password.send_keys('*******') 12driver.find_element_by_name('commit').click() 13 14driver.find_element_by_xpath('//*[@id="footer-app-launcher"]/div/div/div[2]/div/ul/li[8]').click() 15sleep(10) 16#driver.find_element_by_link_text('ダウンロード・アップロード').click() 17 18URL = urljoin(driver.current_url, '/download.html') 19driver.get(URL)

投稿2020/01/01 20:59

Reach

総合スコア733

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問