python初心者で、様々なサイトをかじりながらコードを書いています。
あるコードを書いている際に疑問に思い、実装できなかった&検索しても解決しなかったので質問させていただきます。
前提・実現したいこと
あるサイトでseleniumを用いて「ラジオボタンをクリック→OKボタンをクリック」を複数回行いたいと考えています。
その際、ラジオボタン/okボタンのソースコードが
html
1<input id="ohayo_1" type="radio" value="1"> 2<input type="submit" name="hogehoge_1" value="OK" id="hogehog_1"> 3 4<input id="ohayo_2" type="radio" value="1"> 5<input type="submit" name="hogehoge_2" value="OK" id="hogehog_2"> 6 7<input id="ohayo_3" type="radio" value="1"> 8<input type="submit" name="hogehoge_3" value="OK" id="hogehog_3">
のようになっているので、seleniumのfind_elementを用いて「ラジオボタンをクリック→予約をクリック」を要素がある分だけループさせたいです。
ソースコード
現在このようなコードを書いています。
python
1number = 0 2radio_id = f'ohayo_{number}' 3OK_id = f'hogehog_{number}' 4 5while len(driver.find_element_by_id(radio_id)) == 0: 6 driver.find_element_by_id(radio_id).click() 7 driver.find_element_by_id(OK_id).click 8 number = number + 1 9
このhtmlではラジオボタン/OKボタンが3つしかないですが、本番環境ではそれらの個数が可変のため(ラジオボタンとOKボタンは同数)、find_elementsとlenで要素の存在を判定し、無かった際には終了するというようにしたいと考えています。
発生している問題・エラーメッセージ
しかし、上記のコードだと思ったように動作しません。
while処理の後にradio_idやOK_idのnumber部分が変更されているのかどうか、チェックするためにprint関数で出力すると、
ohayo_0 ohayo_0 ohayo_0 ohayo_0 ohayo_0
のようになっておりました。
なので、ページに要素が見つからないため強制終了しているということなのか?と考えています。
どなたか解決できる方がいらっしゃったら、教えていただきたいです。よろしくお願いします。
環境
Windows10
Python3.9
回答4件
あなたの回答
tips
プレビュー