[[20230402041702]] 『seleniumを利用してプルダウンメニューを選択した』(にんじん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『seleniumを利用してプルダウンメニューを選択したい』(にんじん)

お世話になります。
edgeを利用してあるサイトのデータを自動で取得、ダウンロードしたいのですが、
プルダウンメニューで「2023年」「2022年」「2021年」から選択する必要があります。
(初期値が「2023年」なので、その場合はスルーで問題ないのですが、)
「2021年」を選択したい場合、VBAではどのようなコードになるのでしょうか?

関連するであろう部分のhtmlです↓
<div class="dropdown dropdown-small" data-role="dropdown" data-trigger=".dropText" data-display=".dropText .item" data-menu=".dropMenu">

 <div class="dropText">
  <i class="caret-bottom-small"></i>
  <div class="item">2023年</div>
 </div>
 <ul class="dropMenu" style="display: none;">
  <li class="item" data-submit="2023">2023年</li>
  <li class="item" data-submit="2022">2022年</li>
  <li class="item" data-submit="2021">2021年</li>
 </ul>
 <input id="formCsvDownLoad:year" type="hidden" name="formCsvDownLoad:year" value="2023">
</div>

ネットで調べると<select>を使用したメニューの選択方法ばかり出てくるのですが、今回のような<li>から選択する場合についての情報がなく、困っています。
(htmlの構成についてはあまり詳しくないので、丁寧に教えていただけると助かります。)
どうぞよろしくお願いします。

< 使用 Excel:unknown、使用 OS:unknown >


隠し属性のINPUT要素にテキストを直接書き込めばいいんじゃないかな

(と) 2023/04/02(日) 09:10:55


>プルダウンメニューで
WEB での操作ですか。
だとしたら
selenium で検索してみたら自動記録というのがあるらしいですよ。
試してみたらどうですか。

(?) 2023/04/02(日) 09:35:41


>あるサイトのデータを自動で取得、ダウンロードしたい
それなら、個々の質問ではなく、まずは前提となるURLを示されたどうですか?

(xyz) 2023/04/02(日) 11:14:44


>(htmlの構成についてはあまり詳しくないので、丁寧に教えていただけると助かります。)
ここはエクセルの学校ですよ。
他のサイトで質問しましょう。
(がっこうがい) 2023/04/02(日) 11:26:46

と様
ドロップダウンメニュー上は「2023年」のままで、
 <input id="formCsvDownLoad:year" type="hidden" name="formCsvDownLoad:year" value="2023">の
value="2023"をvalue="2021"に書き換えるということでしょうか?
そのためのVBAコードを教えていただくことは可能ですか?
(にんじん) 2023/04/02(日) 14:59:57

>value="2023"をvalue="2021"に書き換えるということでしょうか?
いや、そういうことじゃないんだけど

推測だけど隠し属性のINPUTは、ドロップダウンリストに連動してるんじゃないかなと思う
SUBMITされたときに、値を見てるのがドロップダウンじゃなくてINPUTのほうなら
ドロップダウンじゃなくてINPUTの方を直性書き換えちゃえばいいんじゃない?って話
確証がある訳じゃないからやってみてどうなるか確認してください

>そのためのVBAコードを教えていただくことは可能ですか
それこを検索すれば山のようにでてくるんで、なんでわからないの?って感じだけど
たぶんこんな感じ

 driver.FindElementByID("formCsvDownLoad:yea").SendKeys "2021"

seleniumって隠し属性の要素は操作できなんだっけ?
(と) 2023/04/02(日) 16:28:08


と様
おっしゃる通りドロップダウンリストで「2021年」を選択すると連動して
 <input id="formCsvDownLoad:year" type="hidden" name="formCsvDownLoad:year" value="2021">
に書き換わります。

最初のお返事をいただいてから
Driver.FindElementByID("formCsvDownLoad:year").SendKeys "2021"を試したのですが、
「実行時エラー'0'Selenium error element not interactable」が出てきたので、
根本的に何か間違っているのかと思い、お聞きしてみました。

その後、色々調べて見たところ「Seleniumは非表示(display:none;)の要素はクリックできません」との記述を見つけました。
itemを選択できないのはこちらが原因な気もしますが、
inputの書き換えができない原因にも関わってくるのでしょうか…?
(にんじん) 2023/04/03(月) 02:48:11


対策かな
やりたいことを禁止されてないですか?
(adg) 2023/04/03(月) 07:54:49

 今回の質問とは直接は関係ないけど。

https://ja.wikipedia.org/wiki/%E5%B2%A1%E5%B4%8E%E5%B8%82%E7%AB%8B%E4%B8%AD%E5%A4%AE%E5%9B%B3%E6%9B%B8%E9%A4%A8%E4%BA%8B%E4%BB%B6
(とおりすがりんご) 2023/04/03(月) 09:53:56


adg様、とおりすがりんご様
アドバイスありがとうございます。
ちなみに私がダウンロードしようとしているのは、我が家の家計簿です。
スマホアプリでつけた記録が、PCの公式サイトを通じてCSVでダウンロードできるので、その内容をエクセルで管理しようと思ったものの、IDパス入力からダウンロードまでの手順がなかなか面倒なので、自動化しようと思い質問してみました。(アクセスは週に1回程度の予定です。)

この行為が禁止事項に当てはまるかは不明ですが、年を跨がない限りは初期値の「2023年」で問題ないので、このまま使用したいと思います。

他の方のご意見も今後の参考にさせていただきます。
みなさん、どうもありがとうございました。
(にんじん) 2023/04/04(火) 01:27:54


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.