【Python×Selenium】複数あるラジオボタンから1つを選択して取得する方法|find_elementsの使い方

目次

背景

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を使って要素をリストとして取得し、インデックス指定で操作することで、
個別に選択・クリックすることが可能です。

スクレイピングや自動入力処理などで、ラジオボタンの操作に困った際は、ぜひ活用してみてください。

最後までお読みいただき、誠にありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次