こんにちは。
友人から頼まれて某フリマサイトのWebスクレイピングを試みています。
で、Selenium経由で制御しているのですが、まぁー、画面遷移に繋がるClickメソッド前後の動きが安定しない💦
Clickメソッド発行後は、画面が正しく遷移した前提で次の値取得などを進める途端、直前の画面遷移がうまくいっていないようでエラーになる。そんなエレメントはない、と…笑
で、エレメントの存在チェックやWait発行、画面遷移がうまくいっていることの確認など、Clickメソッドの度に行っていたらソースが膨れ上がっちゃうので共通サブルーチンを作ってスマート化しました。。。
■ 動作環境
OS: Windows 8.1(64ビット)
Excel: 2013(32ビット)
Chrome: 86.0.4240.198
Selenium Basic: v2.0.9.0
■ 共通サブルーチン
こんな感じにしてみました。
コール元のソース都合によっては、引数の在り方は他にもあると思いますが、とりあえずこの方式で。^^
argWd: 「特に」Waitメソッドのために必要な作成済みのWebDriverインスタンス(なんかこれ無駄ですよね…)
argBy: 要素を検索する際の条件となるByインスタンス
argTitle: Clickメソッドによって画面遷移した後の画面タイトル
argLimit: ループ回数期限(ここがセンスないですよね…笑)
あ、g_WAIT_SHORTは、事前に定義しておいた定数でして、500とかできってます。
画面遷移が正常に完了して新しい画面のタイトルが確認できるか?それともループ回数期限に到達するか?の何れかによって処理を終了します。
共通サブルーチンの戻り値は、画面遷移が成功=True、失敗(ループ回数期限に到達)=Falseとなります。
■ まとめ
いかがでしたでしょうか?
内容薄っぺらいですが、こんな共通サブルーチンって意外に便利だったりしますよね!
今回は、元ソースの画面遷移の度に重たいソース群を書いていたところをスッキリさせるために共有サブルーチンにしてみました。
なお、本備忘録を活用した【メルカリ管理ツール】を以下サイトで提供しております。
ご興味ございましたらご覧ください。
次回以降も、苦労した点を備忘録しようと思います。
Comments