目次
背景
PythonでWebスクレイピングのプログラムを作成していた際、
対象のページにラジオボタンが2つ存在していました。
調べたところ、どちらも同じname
属性を持っており、
通常の取得方法ではどちらか1つを選んで操作することができませんでした。
そのため、今回は複数あるラジオボタンから特定の1つを取得して操作する方法を学習しました。
問題:find_element
では1つしか取得できない
まず、うまくいかなかったコード例です。
以下は、name="pay_method"
のラジオボタンを取得しようとしたものです。
driver.find_element(By.NAME, "pay_method")
このコードはエラーにはなりませんが、
複数ある同じname属性の要素のうち、最初の1つしか扱えず、選択肢の区別がつきませんでした。
解決策:find_elements
を使って配列で取得する
次に、うまくいったコードです。
driver.find_elements(By.NAME, "pay_method")[0]
このように、find_elements
を使うことで、
該当するすべてのラジオボタンをリストとして取得できます。
配列のインデックスを指定することで、
任意のラジオボタンを個別に扱うことが可能になります。
例:1番目のラジオボタンを選択してクリック
driver.find_elements(By.NAME, "pay_method")[0].click()
例:2番目を選択したい場合
driver.find_elements(By.NAME, "pay_method")[1].click()
注意点
find_element
(単数)ではなく、find_elements
(複数形)を使う必要があります。
最後のs
を忘れずに記述してください。- 配列形式で取得されるため、
[0]
や[1]
などインデックス指定が必須です。
まとめ
PythonのSeleniumで、同じname属性を持つラジオボタンが複数ある場合は、find_elements
を使って要素をリストとして取得し、インデックス指定で操作することで、
個別に選択・クリックすることが可能です。
スクレイピングや自動入力処理などで、ラジオボタンの操作に困った際は、ぜひ活用してみてください。
最後までお読みいただき、誠にありがとうございました。