Selenium プルダウンから選択値(選択中の値)を取得する方法

Seleniumメモ

編集画面とかで多用されているプルダウンリスト(ドロップダウンリスト)で現在選択されている値の取り方ってどうするんだけ?
となってしまってググったが、値のセット方法ばかりが、やたらヒットしてしまって見つからないのでメモっておきます。
今思えば入門書に書いてあったような気もするので、当たり前すぎてあまり語られていないのかな^^;)
それともコピペサイトが多いので、オリジナルサイトでたまたま語られなかったのか...

#とりあえず通常の項目を探す方法で対象のプルダウンを特定し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

 

 

コメント

  1. 匿名 より:

    お知恵を拝借できれば幸いです
    現在進行形でプルダウンメニューの選択で悩んでいます
    項目番号で選択はできるのですがプルダウンの順番が時々変わるサイトがあり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)

      こんな感じで。^^

タイトルとURLをコピーしました