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

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

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

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

Python

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

selenium

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

Q&A

0回答

675閲覧

seleniumの要素あるのに見つからない

kannnna

総合スコア1

スクレイピング

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

Python

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

selenium

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

0グッド

0クリップ

投稿2023/01/30 09:05

前提

要素があるはずなのに、inputへの入力ができません。
どのようにすれば、入力できるでしょうか?

実現したいこと

inputへの入力をしたいです。

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

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="login_form_emailAddress"]"}

該当のソースコード

python

1 print(f"driver.page_source:{print(driver.page_source)}") 2 driver.find_element_by_xpath('//*[@id="login_form_emailAddress"]').send_keys("メールアドレス") 3 driver.find_element_by_xpath('//*[@id="login_form_encryptedPasswd"]').send_keys("パスワード") 4 driver.find_element_by_xpath('/html/body/div[2]/div[2]/div/form/div[5]/div/button').click() 5 # ページが読み込まれるまで待機 6 wait.until(EC.presence_of_all_elements_located)

試したこと

xpath以外にも、idやnameで試しましたが、同じく要素が見つかりませんでした。
driver.page_sourceで見ると、下のようなソースコードが出てきます。

該当のページのソースコード

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Language" content="ja" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="viewport" content="width=980" /> <meta name="vue-csrf-token" content="HDGvyunXrzUngUClIGKatGaewni7vYqOu57DyKCOOfY" /> <meta name="vue-route" content="" /> <meta name="description" content="" /> <meta name="author" content="" /> <meta http-equiv="refresh" content="1380" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <link rel="stylesheet" href="/build/js/common.css?v=%asset_version%" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <script async="" src="https://am.yahoo.co.jp/rt/?p=RBP6MCGVVI&amp;label=&amp;ref=https%3A%2F%2Faff.valuecommerce.ne.jp%2Fad%2FselectAdLink%3Fad_search_condition_form%255BadType%255D%3Dmylink%26ad_search_condition_form%255BadOid%255D%3D2614000&amp;rref=&amp;pt=&amp;item=&amp;cat=&amp;price=&amp;quantity=&amp;r=1675067218.337761&amp;pvid=atxyoq4ptjldijrtd2&amp;_impl=prev"></script><script type="text/javascript" async="" src="https://www.google-analytics.com/plugins/ua/linkid.js"></script><script src="https://connect.facebook.net/signals/config/265243995539950?v=2.9.92&amp;r=stable" async=""></script><script async="" src="https://connect.facebook.net/en_US/fbevents.js"></script><script type="text/javascript" async="" src="https://static.ads-twitter.com/uwt.js"></script><script type="text/javascript" async="" src="https://www.google-analytics.com/analytics.js"></script><script type="text/javascript" async="" src="https://www.googletagmanager.com/gtag/js?id=G-VK84XFLB71&amp;l=dataLayer&amp;cx=c"></script><script async="" src="//www.googletagmanager.com/gtm.js?id=GTM-TRF4H5"></script><script src="/build/js/common.js?v=%asset_version%"></script> <!-- Le HTML5 shim, for IE6-8 support of HTML elements --> <!--[if lt IE 9]> <script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <title>ログイン</title> <script src="/bundles/fosjsrouting/js/router.min.js?v=%asset_version%"></script> <script src="/js/routing?callback=fos.Router.setData"></script> <link rel="stylesheet" href="/build/js/header_main.css?v=%asset_version%" /> <link rel="shortcut icon" href="/favicon.ico?v=%asset_version%" /> <link rel="apple-touch-icon-precomposed" href="/apple-touch-icon-precomposed.png?v=%asset_version%" /> <link rel="apple-touch-icon" href="/apple-touch-icon.png?v=%asset_version%" /> <meta http-equiv="origin-trial" content="A751Xsk4ZW3DVQ8WZng2Dk5s3YzAyqncTzgv+VaE6wavgTY0QHkDvUTET1o7HanhuJO8lgv1Vvc88Ij78W1FIAAAAAB7eyJvcmlnaW4iOiJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbTo0NDMiLCJmZWF0dXJlIjoiUHJpdmFjeVNhbmRib3hBZHNBUElzIiwiZXhwaXJ5IjoxNjgwNjUyNzk5LCJpc1RoaXJkUGFydHkiOnRydWV9" /><script type="text/javascript" async="" src="https://googleads.g.doubleclick.net/pagead/viewthroughconversion/862075254/?random=1675067216841&amp;cv=11&amp;fst=1675067216841&amp;bg=ffffff&amp;guid=ON&amp;async=1&amp;gtm=2wg1p0&amp;u_w=1280&amp;u_h=1696&amp;hn=www.googleadservices.com&amp;frm=0&amp;url=https%3A%2F%2Faff.valuecommerce.ne.jp%2Fad%2FselectAdLink%3Fad_search_condition_form%255BadType%255D%3Dmylink%26ad_search_condition_form%255BadOid%255D%3D2614000&amp;tiba=%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3&amp;auid=1514703922.1675067217&amp;rfmt=3&amp;fmt=4"></script><script type="text/javascript" src="https://b97.yahoo.co.jp/pagead/conversion_async.js"></script></head> <body data-spy="scroll" data-target=".subnav" data-offset="50" class="site-selector-body"> <div class="nav_upper container-fluid navbar-default"> <nav class="navbar navbar-fixed-top"> <!-- nav_upper --> <div class="nav_upper container-fluid navbar-default"> <div class="navbar-header"> <a class="navbar-brand" title="" data-ga-action="link-home-logo"> <img src="/img/logo.png" /> </a> </div> </div> </nav> </div> <!-- /nav_lower --> <div class="container-fluid main-content"> <script type="text/javascript"> document.cookie = 'I_do_Javascript=yes;PATH=/'; </script> <div class="row"> <div class="col-xs-8 col-xs-offset-2"> <h4> ログインしてください </h4> <p>ログイン後、目的のページに移動します。<br /><br />(ご利用中にこのページが表示された方へ)<br />一定時間システムのご利用がなかったため、自動的にログアウトしました。<br />引き続きご利用いただく場合には、再度ログインしてください。</p> </div> </div> <div class="row login_btn_bsp"> <div class="col-xs-8 col-xs-offset-2"> <form class="form-horizontal" action="/login/" method="post"> <input type="hidden" id="login_form__token" name="login_form[_token]" value="l24ql-JHLoCe88xlpTlaQ8P0bSUYSEcxszcc-5uImZg" /> <div id="err"> </div> <div class="form-group"> <label for="email"> <span>メールアドレス</span></label> <input type="email" id="login_form_emailAddress" name="login_form[emailAddress]" required="required" class="form-control" /> </div> <div class="form-group"> <label for="password"> <span>パスワード</span></label> <input type="password" id="login_form_encryptedPasswd" name="login_form[encryptedPasswd]" required="required" class="form-control" /> </div> <div class="form-group"> <label class="checkbox"> <input type="checkbox" id="login_form_remember" name="login_form[remember]" value="1" /> <span>次回から自動でログイン</span> </label> </div> <div class="form-group"> <div class="mt10"> <input type="hidden" name="path" value="http://aff.valuecommerce.ne.jp/ad/selectAdLink?ad_search_condition_form%5BadType%5D=mylink&amp;ad_search_condition_form%5BadOid%5D=2614000" /> <button type="submit" class="btn btn-primary mr40">ログイン</button> <button type="button" class="btn_white btn_mbentry" onclick="dataLayer.push({'category':'as_login', 'action':'button_link', 'label':'新規登録', 'event':'event-gtm-click'}); window.open('/reg/affiliate_presignup');">無料会員登録</button> </div> </div> </form> </div> </div>

よろしくお願いいたします!!

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

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

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

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

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

Demerara

2023/01/30 12:52 編集

wait.until(EC.presence_of_all_elements_located) は、要素の取得前に書かないと意味がありません。 driver.get() の次の行に書いてください。 それでもダメなら python と selenium のバージョン、web ドライバーの種類(どのブラウザを利用しているか)、可能であれば対象の web サイトの URL を補足として追記して頂けますか?
kannnna

2023/01/31 00:14

回答ありがとうございます! defで飛ばしていたので、記載できていませんでしたが、driver.get()の後にwait.until(EC.presence_of_all_elements_located)はありました。。 python;3.7 seleniumは、https://github.com/ryfeus/gcf-packs.gitからGCPにダウンロードしました。 webドライバー;chrome 対象のページ:https://aff.valuecommerce.ne.jp/ 何度も申し訳ございませんが、よろしくお願いいたします!
Demerara

2023/01/31 05:34

待機されていたのですね。失礼しました。 私の環境では、提示されたページにアクセスできませんでした。フィルター等を外して、アクセスを試みましたが、どうやら該当のページは会員専用のようです。 そのため、私の方では現象の再現ができないため、明確な回答は難しいです。 ただ、HTML を見る限り iframe も shadow root も使われておらず至ってシンプルな作りになっているように思います。試しに、該当する要素を開発者ツールで探して、右クリックから xpath をコピーして find_element_by_xpath() の引数に渡してみてください。また、他の要素の取得もできないのか試してみてください。例えば、h4 の「ログインしてください」という文字列は取得できますか?
kannnna

2023/01/31 12:49

遅くなりすみません。 idとnameでも、取得できませんでした。 h4の「ログインしてください」は取得できました!
Demerara

2023/01/31 12:59 編集

開発者ツールを開いて、エレメントピッカーで取得したい要素をクリック、開発者ツール側のハイライトされた部分を右クリック > コピー > Full XPath を選択して、要素へのフルパスを取得してください。 XPath のフルパスというのは、"/html/body/div/div[3]/main/div[2]/div[3]/div[2]/div[2]/textarea" のように html の先頭から順に指定の要素までに含まれる全ての要素が含まれているものです。これなら間違いようがありません。 h4 が取得できたとなると、パスの指定方法に問題があるはずです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問