私が取り組んでいる会社のウェブサイトのページ読み込み時間を正確に検出しようとしています。私はそれを自動化できるように、これをPythonとSeleniumを使って試してみることに決めました。しかし、私は信頼できるページの読み込み時間を得ることができないので、壁にぶつかったようです。この犯人は、〜3秒のajax呼び出しが終了するまで、ページが「読み込まれた」とはみなさないという事実のようです。しかし、SeleniumはDOMが完全にロードされる前にロードされたページを考慮します。ロード時間ではありません。私はオンラインで読みました。WebDriverWait関数を使用して、ajaxの実行後に表示される要素をポーリングできます。私は新しい要素がajax呼び出しの後に作成されるのでこれを行うことができるはずですが、私はそれが500ミリ秒のポーリング頻度を持っていることをオンラインで気付きました。私は非常に正確にページの読み込み時間を決定しようとしています、そして500msは大きな誤差のマージンです。私はPythonでデフォルトのポーリング頻度を変更する方法についてオンラインで何かを見つけることができませんでした。ポーリング頻度を大幅に減らす方法や、Ajaxで正確なページの読み込み時間を50ms程度の誤差の範囲で取得する方法がわかっている場合は、教えてください。ありがとうございました。私のプロジェクトの一つでPythonでAJAX読み込み時間のページをSeleniumで正確に検出する
1
A
答えて
0
私はこのような関数を書いた:
def wait_for(condition_function, *args):
start_time = time.time()
while time.time() < start_time + 10:
if condition_function(*args):
return True
else:
time.sleep(0.1)
raise TimeoutException(
'Timeout waiting for {}'.format(condition_function.__name__)
)
後でこのようにそれを使用する:login_btn
はセレンオブジェクトであり、obj_has_gone_stale
をしようとする機能である
wait_for(obj_has_gone_stale, login_btn)
オブジェクトを見つけてStaleElementReferenceException
をキャッチします。それは次のようになります。
def obj_has_gone_stale(obj):
try:
# poll the link with an arbitrary call
obj.find_elements_by_id('doesnt-matter')
return False
except StaleElementReferenceException:
return True
あなたが望む任意の時間をwait_for
内部time.sleep()
を設定することができますこの方法で。しかし、obj.find_elements_by_id('doesnt-matter')
も実行に時間がかかることを忘れないでください。確かに、セレンの組み込みがwait for presence
のほうがずっと良ければ、obj
が消えて出現しないようなシナリオではwait_for
と書きました。しかし、obj_has_gone_stale
ではなくobj_has_rendered
のようなものを書くことができます。基本的にはobj
にアクセスし、ページにレンダリングされているかどうかを確認してtrueを返します。次に関数をwait_for
に渡します。
関連する問題
- 1. ページの読み込み時間を確認する
- 2. ajaxでページを読み込み、読み込んだページアンカーにスクロール
- 3. タイミングクロスドメインのページの読み込み時間
- 4. トップ1000ウェブサイトのページ読み込み時間をプログラムで確認する
- 5. ページの読み込み時に毎回ページの読み込み
- 6. Pythonでharファイルからページ読み込み時間を取得するには?
- 7. CodeIgniter:ページ読み込み時間
- 8. AJAXページの読み込みで[オブジェクトオブジェクト]
- 9. ページの読み込み時にAjaxが発生する
- 10. Pythonリクエストでウェブサイトの読み込み時間を測定する
- 11. Webフォームのページのパフォーマンスまたはページの読み込み時間の確認
- 12. ajaxの読み込み時間を測定する
- 13. 通常のページ読み込み時間とは何ですか?
- 14. は、読み込まれたページを検出します - ajax
- 15. boomrangページの読み込み時間にajax実行時間を追加するには?
- 16. Googleアナリティクスのサードパーティプラグインの読み込み時間を確認する
- 17. AJAX読み込みページ内の別のページからdivを読み込み
- 18. クラスJavaでの読み込み時間
- 19. ページの読み込み時間を測定するurllib2 vs curl
- 20. ページの読み込み時間を改善する
- 21. ページの読み込み時間を設定する
- 22. ページの読み込み中にシステム時間とサーバ時間を取る方法
- 23. Selenium Python読み込みページとスクリプト(FirefoxとIE)
- 24. Webページのページ読み込み時間の測定
- 25. 最終ページの読み込み時にjavascriptを呼び出す
- 26. コンテンツの読み込み時の読み込みページ
- 27. 読み込み時間
- 28. AngularJSページの読み込みに時間がかかります
- 29. 読み込み時間がgrailsで
- 30. 合計ページ読み込み時間を取得する