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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Python

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

selenium

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

Q&A

解決済

2回答

2481閲覧

Selenium ドロップダウンを操作したい

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

selenium

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

0グッド

0クリップ

投稿2020/08/28 03:49

編集2020/08/28 03:51

##前提・実現したいこと
seleniumを使って、ドロップダウンを操作したいのですが、エラーが出てしまいます。

driver.page_sourceを使って、ソースコードを取得してみたところ、ドロップダウンのHTMLコードがないように思われます。
だから、「no such element」のエラーが出るのだと思いますが、このような場合は、どうすればドロップダウンを操作できるのか教えてください。
よろしくお願いします。

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

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="TDK"]"}

##該当のソースコード

python

1from selenium.webdriver.support.ui import Select 2from selenium import webdriver 3 4driver = webdriver.Chrome(r'C:\Users\apple\OneDrive\デスクトップ\chromedriver_win32\chromedriver.exe') 5 6driver.get('https://www.land.mlit.go.jp/webland/download.html') 7 8prefecture = driver.find_element_by_name("TDK")

##試したこと

driver.page_sourceで得たソースコード。

'<html><head>\n<meta http-equiv="content-type" content="text/html; charset=euc-jp">\n<link rel="stylesheet" href="css/webland2.css" type="text/css">\n<script type="text/JavaScript" src="js/libs/jquery/dist/jquery.min.js" language="JavaScript" charset="utf-8"></script>\n<title>土地総合情報システム</title>\n<style type="text/css">\n.style1 {\n\tpadding-left:10px;\n}\n.style2 {\n\tfont-size: xarge;\n\tfont-weight: bold;\n}\n.style3 {\n\tbackground:#99CCFF none repeat scroll 0 0;\n\tfont-size: large;\n\theight:40px;\n}\n.style4 {\n\tbackground:#99CCFF none repeat scroll 0 0;\n\tfont-size: small;\n\theight:5px;\n}\n</style>\n\n<script type="text/javascript">\n<!--\nfunction popup(){\n\tNewWin = window.open("yakkan.html", "_blank","width=740,height=480,left=10,top=10,titlebar=no,resizable=yes,scrollbars=yes");\n}\n$(document).ready(function () {\n\tvar sTDK = null;\n\tvar sSKC = null;\n\tvar sTDID = null;\n\tvar sTDIDTO = null;\n\tvar sUrlPara ="";\n\tif(location.search.length == 0){\n\t\treturn false;\n\t}\n\tvar sUrlPara = location.search.split("?")[1];\n\tsUrlPara = sUrlPara.split("&");\n\tfor(var i=0; i < sUrlPara.length;i++){\n\t\tvar aHash = sUrlPara[i].split("=");\n\n\t\tswitch(aHash[0]){\n\t\tcase "TDK":\n\t\t\tsTDK = aHash[1];\n\t\t\tbreak;\n\t\tcase "SKC":\n\t\t\tsSKC = aHash[1];\n\t\t\tbreak;\n\t\tcase "TDID":\n\t\t\tsTDID = aHash[1];\n\t\t\tbreak;\n\t\tcase "TDIDTO":\n\t\t\tsTDIDTO = aHash[1];\n\t\t\tbreak;\n\t\tdefult:\n\t\t\tbreak;\n\t\t}\n\t}\n\tif(sTDK){\n\t\tsUrlPara = "?TDK=" + sTDK;\n\t\tif(sSKC){\n\t\t\tsUrlPara += "&SKC=" + sSKC;\n\t\t}\n\t\tif (sTDIDTO) {\n\t\t\tif (sTDID) {\n\t\t\t\tsUrlPara += "&TDIDFrom=" + sTDID;\n\t\t\t}\n\t\t\tsUrlPara += "&TDIDTo=" + sTDIDTO;\n\t\t} else {\n\t\t\tif (sTDID) {\n\t\t\t\tsUrlPara += "&TDID=" + sTDID;\n\t\t\t}\n\t\t}\n\t\t$("iframe").attr("src", $("iframe").attr("src") + sUrlPara);\n\t} else {\n\t\tif (sTDID) {\n\t\t\tsUrlPara = "?TDID=" + sTDID;\n $("iframe").attr("src", $("iframe").attr("src") + sUrlPara);\n\t\t}\n\t}\n});\nfunction checkLoadSucces(f) {\n\t/**\n\tif (!f.contentWindow.englishKenNames) {\n\t\tif (f.contentDocument) {\n\t\t setTimeout(function() {\n\t\t \tf.contentDocument.location.reload(true);\n\t\t },1000);\n\t\t} else if (f.contentWindow) {\n setTimeout(function() {\n f.contentWindow.document.location.reload(true);\n },1000);\n\t\t}\n\t}\n\t**/\n}\n\n//--->\n</script>\n</head>\n<body class="bg_white">\n\t<table border="0" align="center" cellpadding="0" cellspacing="0" width="712">\n\t\t<tbody><tr>\n\t\t\t<td colspan="2" align="center" valign="middle" class="style3">\n\t\t\t\t<img src="img/dl_sys_midashi.gif" width="455" border="0" alt="不動産取引価格情報ダウンロード">\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style="height:3px;"></td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td align="right">\n\t\t\t\t<a href="note.html#down" target="_blank"><img src="img/gis/btn_web.gif" alt="Webの見方" width="84" height="19" style="border-style: none;"></a>\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td>\n国土交通省では不動産の取引価格情報のダウンロードを平成21 年度より開始しました。\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td>\n都道府県及び市区町村を選択の上、取引時点ごとにダウンロードボタンを選択してください。\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td>\n&nbsp;&nbsp;※CSV形式のデータをZIPで圧縮したファイルがダウンロードされます。\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td>\n&nbsp;&nbsp;※データ表示を選択するとサンプルデータをご確認できます。\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td><iframe src="servlet/DownloadServlet" scrolling="no" frameborder="0" width="715" height="360" onload="checkLoadSucces(this)"></iframe></td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td align="center"><a onclick="javascript:popup();" href="javascript:void(0);">※ご利用になる前に、利用約款を必ずご確認下さい。</a></td>\n\t\t</tr>\n\t\t<tr><td><br></td></tr>\n\t\t<tr><td><br></td></tr>\n\t\t<tr>\n\t\t\t<td>\n\t\t\t\t<div align="center">\n\t\t\t\t\t<table width="100%" border="0" cellspacing="0" cellpadding="0" style="border:0px">\n\t\t\t\t\t<tbody><tr>\n\t\t\t\t\t\t<td align="center" style="border:0px"><hr width="100%" align="left">\n\t\t\t\t\t\t<a href="/webland/">土地総合情報システムトップへ</a>\u3000<a href="http://www.mlit.go.jp/">国土交通省ホームページへ</a><br>\n\t\t\t\t\tCopyright© 2009 MLIT Japan. All Rights Reserved.</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t</tbody></table>\n\t\t\t\t\t<br>\n\t\t\t\t</div>\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr><td><br></td></tr>\n\t\t<tr><td><br></td></tr>\n\t</tbody></table>\n\n</body></html>'

##補足情報(FW/ツールのバージョンなど)
サイトURL:https://www.land.mlit.go.jp/webland/servlet/MainServlet

ドロップダウンのサイトURL:https://www.land.mlit.go.jp/webland/download.html

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

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

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

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

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

guest

回答2

0

ベストアンサー

ドロップダウンの部分はインラインフレームで別なHTMLを表示させています。
HTMLのソースコードのiframeタグの部分がそうです。
こういうページを読み込む場合はswitch_to.frame関数を使って
webdriverが参照しているページをインラインフレームのに切り替えてから処理してください。

python

1from selenium.webdriver.support.ui import Select 2from selenium import webdriver 3 4driver = webdriver.Chrome(r'C:\Users\apple\OneDrive\デスクトップ\chromedriver_win32\chromedriver.exe') 5 6driver.get('https://www.land.mlit.go.jp/webland/download.html') 7 8driver.switch_to.frame(driver.find_element_by_tag_name("iframe")) 9 10prefecture = driver.find_element_by_id("TDK") 11 12print(prefecture.text) 13

投稿2020/08/28 04:16

編集2020/08/28 04:17
yureighost

総合スコア2183

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

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

退会済みユーザー

退会済みユーザー

2020/08/28 05:43

回答ありがとうございます。 教えて頂いた通り、switch_to.frame関数を使ったら、うまくいきました。 勉強になりました。 ありがとうございました。
guest

0

driver.page_sourceじゃなくて、ブラウザの開発者ツールを使って、要素を確認します。

投稿2020/08/28 04:22

otn

総合スコア84798

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

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

退会済みユーザー

退会済みユーザー

2020/08/28 05:51

回答ありがとうございます。 Chromeの「検証」を使うと、ドロップダウンのHTMLは表示されるのですが、seleniumで要素を取得すると「no such element」のエラーが出てしまいます。 説明不足ですみません。
otn

2020/08/28 05:54

iframeを見落としたと言うことみたいですね。
退会済みユーザー

退会済みユーザー

2020/08/28 23:41

「selenium ドロップダウン」で検索すると、ドロップダウンの項目を選択する方法は書いてあるのですが、iframeのことまでは書いてありませんでした。 調べても分からず、質問した次第です。 iframeは、YouTubeの動画の埋め込みのソースコードで見たぐらいで、よく知りませんでした。 失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問