カテゴリ:その他 投稿:2022年6月21日3:43、更新:2022年7月7日0:57
・記事の概要
Chrome拡張機能のseleniumIDEを使っていて、処理が途中で止まってしまった場合などに使える対処法を紹介していきます。
seleniumIDE自体結構Try&Errorの繰り返しになりがちなので参考にしてみてください。
・この記事でできるようになること
Chrome拡張機能のseleniumIDEで思った挙動ができない際の簡易的な解消方法を知ることができます。
またseleniumIDEで画面のレコーディング以外での処理を入れ込む方法も解説していきます。
seleniumIDEのそもそもの使い方は以下を参考にしてください。
seleniumを使ったノーコードでのブラウザ自動操作について①
seleniumを使ったノーコードでのブラウザ自動操作について②
・今回使ってみるサイト
以下の気象庁の天気データをDLできるサイトで試してみます。
・実際にやってみる
上記サイトにアクセスして、抽出条件の「期間を選ぶから」最初は「最近1ヶ月」を指定の上でcsvをダウンロードして、そのまま期間だけ「2ヶ月前〜1ヶ月前」にプルダウンの選択を変更し、再度svをダウンロードをしてみるといったことをレコーディングしてみます。
レコーディングしたものを実行してみると、最初のcsvダウンロードまではうまくいきますがその後の6行目の処理でずっと処理が止まってしまいました。
clickの処理ですがこれは
「2ヶ月前〜1ヶ月前」にプルダウンの選択を変更し
部分で期間のプルダウンで月を指定し変更しようとしているところで止まってしまっています。
何分待っても止まっているままです。
・原因は何か?
こういった途中で処理が止まってしまう場合に原因として考えられるものとしては
・指定した要素が一意ではない
・ページの動的処理によって要素が不確定の段階で指定してしまっている
などが考えられます。
「指定した要素が一意ではない」とは「name=inim」が画面内に他にもある場合、selemiumがどれのこと?状態になってしまうことを指します。F12などで開発者モードを開いて確認してみましょう。
「ページの動的処理によって要素が不確定の段階で指定してしまっている」の場合は待機の処理を入れてあげることが有効です。以下で紹介します。
・seleniumIDEに任意の処理を追加する
今回の場合、エラー(止まってしまう)箇所の前に何秒か待機する処理を入れてみます。
selenium画面で処理を入れたい行を右クリックして「Insert new command」を選択します。
selenium画面でまずは処理を停止しないと処理追加できないので、停止ボタンから処理自体を止めてから実施ください。
「Insert new command」により行が追加されたので任意の処理を入れることができます。
ここではCommandに「Pause」、Targetに「2000」と追加してみます。
そうすると2000ms(2秒)待機という処理が追記できます。
・これで解消か。。。?
上記を追加の上で再度実行してみます。2秒待機後に再度止まってしまっていますね。。。
また「指定した要素が一意ではない」を疑ってみてみますが「name=inim」は一意であることが確認でき、それも問題なさそうです。
今回は上述のあるあるの原因ではないようですね。こういったケースもまたあるあるなんですけどね 笑
・では、どうするか
前述の通り、seleniumIDE自体結構Try&Errorの繰り返しになりがちです。
何が原因かを探すよりどうすれば解決できそうかを考えるのが良いでしょう。
この場合、シンプルに冒頭の処理をそのままコピーして画面を際遷移させてみます。
既存の行を右クリックでCopy、指定行にPasteできます。
その上で実行してみると、、、
成功ですね!
なんでこんなことをしたかというと、止まってしまって要素にアクセスできないでいたので、画面をリロードしてあげようくらいの気持ちで再遷移をさせたんですね。
前述の通り、どうすれば解決できそうかのマインドですね。
皆さんももし自分で画面操作していて、サイトの調子が悪いと更新かけたりしませんか?
YESだとするとその思想をseleniumにも持って来れれば解消できたというのが今回の例です。
前述の通り、どうすれば解決できそうかのマインドですね。
・まとめ
いかがだったでしょうか。
seleniumIDEは対象のサイトによって異なるエラーが出てしまいますので少しクセがあります。
繰り返しにはなってしまいますが、今回伝えたかったのは、原因が何かも大事だけどそれを追求するよりも回避できそうな方法を試す方が速かったりもするよ、ということです。
エラーに心折られることなく挑戦してみてください!
以下の記事では同じサイトを対象に、Pythonコーディングで画面操作をしていますので、こちらも是非みてみてください。
【Python】特定サイトで条件指定してファイルをダウンロードするような処理を自動化してみる
また自動化を学習、特にPythonなどのプログラミング言語を習得する際には
以下のようなオンライン学習(動画学習)サービスがオススメです!
リンク先に非エンジニアの方でも難なく学習可能で、事務作業をPythonで自動化できる講義を紐づけています。
動画の解説を見て、手を実際に動かして、効率化技術を習得しましょう!
コメント一覧
コメント投稿ページへ