編集画面とかで多用されているプルダウンリスト(ドロップダウンリスト)で現在選択されている値の取り方ってどうするんだけ?
となってしまってググったが、値のセット方法ばかりが、やたらヒットしてしまって見つからないのでメモっておきます。
今思えば入門書に書いてあったような気もするので、当たり前すぎてあまり語られていないのかな^^;)
それともコピペサイトが多いので、オリジナルサイトでたまたま語られなかったのか...
#とりあえず通常の項目を探す方法で対象のプルダウンを特定しelement化 element = webdrv.find_element_by_xpath('//*[@id="hogehoge"]') #方法1:elementをselectし、全選択肢を取得したlistの0番が選択中の値 target1 = Select(element).all_selected_options[0].text #方法2:方法1との違いは知らないが、テストした限りでは同じ結果が得られた。 target2 = Select(element).first_selected_option.text
コメント
お知恵を拝借できれば幸いです
現在進行形でプルダウンメニューの選択で悩んでいます
項目番号で選択はできるのですがプルダウンの順番が時々変わるサイトがありfindtextの様に言葉で検索できないかなと悩んでいます
こんにちは、まるむしです。
selenium初心者のまるむしに質問するとは、けっこう追い詰められてますか?^^
さてご質問の件ですが、検索の目的は選択するため。という事でよかったですか?
であれば選択したいワードはわかっているはずなので、send_keysを使えばよいのではと思いますがダメですか?
例えば、ここのサイトのアーカイブプルダウン(サイドバーの下方)から「2020年6月」を選びたいとします。
アーカイブなので毎月リストの内容は増えてインデックスは変化しています。
サンプルコードはポイントになる箇所のみですが下記のような感じで
# まるむしアンテナ
webdrv.get(‘https://antenna.infomixer.net/’)
webdrv.find_element_by_xpath(‘//*[@id=”archives-dropdown-4″]’).send_keys(“2020年6月”)
これで選択状態にできます。
なおリストの内容をとりたいなら、optionsとかで取れますね。
target1 = Select(element).options
for i in range(10):
print(target1[i].text)
こんな感じで。^^