とあるサイトを自動的に巡回させる時にボタン要素をクリックできなくなって詰まったので、それの覚書。
状況:
画像サムネイルが複数あり、サムネイルをclick()で拡大して巡回しようとしたものの、その時に表示されたcloseボタンがclick()で反応せず。
画像拡大>表示>閉じる>次の画像拡大>表示>閉じる…という動作にしたい。
close_btn = driver.find_element(要素)
close_btn.click()
サムネイルはこれでクリックできて拡大表示は出来ますが、その後の閉じるボタンがクリックできないという事態に。
実際、画像にはボタン要素が記述されて、閉じるボタンにはボタン要素が記述されていなかったので、仕方ないかとは思いますが。
解決:
seleniumの記録ツールやデベロッパーツールで、どうにかこうにかclick()が使えないかCSSセレクタやXPATHなどを駆使するものの全敗。
さんざんさがして見つけた方法がこちら。
close_btn = driver.find_element(要素)
driver.execute_script('arguments[0].click();', close_btn)
これで無事解決。
「ボタン」じゃなくても、ボタン動作するものをこれで解決できるみたいです。
これで、スクレイピング関連の技術はちょっと上がったかな?とは思います。
参考資料:
実際に参照したのがかなり前で参照元残して置くのを忘れたのでちょっと探してみたところ、このあたりが見たかもしれないページでした。
自動化って良いですね。時短よりもなによりもイライラが減る。