LoginSignup
1
0

More than 1 year has passed since last update.

Python を Selenium の ChromeDriver でドロップダウンリストを指定する

Posted at

スクレイピングでドロップダウンリストを指定したい

1. 環境

内容 バージョン
OS Windows 10 Pro (64bit)
Chrome 92.0.4515.159
ChromeDriver 92.0.4515.107
Python 3.9.0
selenium 3.141.0
  • Visual Studio Code
アイテム バージョン
バージョン 1.59.1 (user setup)
コミット 3866c3553be8b268c8a7f8c0482c0c0177aa8bfa
日付 2021-08-19T11:56:46.957Z
Electron 13.1.7
Chrome 91.0.4472.124
Node.js 14.16.0
V8 9.1.269.36-electron.0
OS Windows_NT x64 10.0.19042
Python 3.9.0 64bit

2. Select モジュールを使う

以下の様な HTML コードのとき、

<html>

<select name="test" id="Dropdown">
    <option value="1">1番目</option>
    <option value="2">2番目</option>
    <option value="3">3番目</option>
    <option value="4">4番目</option>
    <option value="5">5番目</option>
    <option value="6">6番目</option>
</select>

</html>

まず、Select モジュールをインポート
from selenium.webdriver.support.select import Select

# ドロップダウンリストを取得するために
dropdown = driver.find_element_by_id('Dropdown')
# で、id:Dropdown の要素を取得。
# Select オブジェクトを生成。
select = Select(Dropdown)

# select_by_xxx( )というメソッドで特定の選択肢(option)を選択状態にできる

# 3番目のoptionタグを選択状態に
# インデックスなので1つ目の選択肢は0からスタート。
select.select_by_index(2)  
# 最後のoptionタグを選択状態に
select.select_by_index(len(select.options)-1)  

Select.optionsとすると、全てのoptionタグがWebElementのリストで返ってくるのでlen()関数で選択肢の数を数えることができる。
今回は中身の値で選択したいので、
select.select_by_value('3')
テキストで指定する場合は
select.select_by_visible_text('3番目')

3. 参考にさせて頂いたサイト

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0