seleniumのEXCEL やAccess VBAでwebページをロード待ちさせるコード。 seleniumでのVBA関連のコーディングに詳しい方ご教授ください。

Visual Basic | プログラミング128閲覧xmlns="http://www.w3.org/2000/svg">500

ベストアンサー

2

2人がナイス!しています

seleniumでは Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop ⇑ この処理を内部で行っているけど一定時間経過で”TimeOut”を吐き出して完全な読み込み完了までは待たない 動作の重いPCでYahooを開くと高確率でエラーになる その際に .SetCapability "pageLoadStrategy", "none" でとりあえず読み込みを開始して 次の処理に必要な要素が読み込まれるまで Do While 要素.Count = 0 Loop で待機処理を行うことでエラーを回避できるってことです

ThanksImg質問者からのお礼コメント

お二方、ありがとうございました、 それぞれ教授いただいたやり方でうまくいけそうです。 とても助かりました!

お礼日時:7/1 17:16

その他の回答(1件)

2

こんにちは。 非同期で、読み込みするようなサイトなら、readystateも、役に立たない、 なんてよくありますよ。 基本的に、seleniumは、全部読み込みしてから処理が進む、という場合がほとんど。 それでも、不足がある、という場合、どうしてそれを認識したのか、です。 もし、findelementで、あるはずのものが探せない、なら、 それが探せるまで、waitしながら、チェックするループにする。 要素が不確定、なら、「ページの最後にあるはずのエレメント」を探す、 とか、 linkエレメント全体を取得して、その総数が「安定」したら、読み込みが終わったと、判定する。 など、動的なサイトに対して、逃げ道を考えることになります。 リンクを取得したら、countでわかりますよ。

2人がナイス!しています

早速の回答ありがとうございます! >要素が不確定、なら、「ページの最後にあるはずのエレメント」を探す、とか、 素人質問ですみませんが、 ページの最後というのは単純に一番下のソースにあるエレメント、という理解でよろしいでしょうか? ページは上のソースから読み込みされていくので一番下のエレメントを探してそれが存在するなら読み込み完了と言っていい、という理解でよろしいでしょうか?