我在嘗試在我正在處理的公司網站上準確檢測頁面加載時間。我決定嘗試使用python和selenium來做到這一點,這樣我就可以實現自動化。不過,由於我無法獲得可靠的網頁加載時間,因此我似乎遇到了困難。罪魁禍首似乎是這樣的事實,我們不認爲頁面「加載」,直到約3秒ajax呼叫結束。然而,Selenium認爲在DOM完全加載之前加載頁面,這不是我們正在尋找的加載時間。我在線閱讀過,我可以使用WebDriverWait函數輪詢ajax執行後出現的元素。我應該能夠做到這一點,因爲在ajax調用之後創建了新的元素,但是,我在網上注意到它的輪詢頻率爲500ms,這對我來說太大了。我試圖非常準確地確定頁面加載時間,500毫秒是一個很大的誤差。我找不到任何關於如何更改python中的默認輪詢頻率的任何內容,只是Java中類似的東西,我不能解密。如果您知道如何大幅降低輪詢頻率,或者更好地瞭解如何使用Ajax獲得準確的頁面加載時間,誤差範圍約爲50ms,請讓我知道。謝謝。在Python中使用Selenium精確檢測帶有AJAX加載時間的頁面
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__)
)
以後使用它像這樣:
wait_for(obj_has_gone_stale, login_btn)
其中login_btn
是硒對象,obj_has_gone_stale
是試圖給一個函數找到對象並捕獲一個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
用這種方法你可以設置time.sleep()
內wait_for
你想要的任何時間。但不要忘記,obj.find_elements_by_id('doesnt-matter')
也可能需要一些時間來執行。不知道是否Selenium內置wait for presence
好多了,因爲我寫了wait_for
,因爲obj
必須消失而不會出現。但是你可以寫一些類似於obj_has_gone_stale
但是obj_has_rendered
的東西。它基本上必須嘗試訪問obj
並查看它是否已在頁面上呈現並返回true。然後將該功能傳遞給wait_for
。
相關問題
- 1. 檢測頁面加載 - ajax
- 2. 檢查Selenium中的頁面加載時間
- 3. 在capybara-webkit或selenium中使用rspec來測量頁面加載時間
- 4. JMeter - 測量頁面使用AJAX加載時間
- 5. 在硒中測試頁面加載時間的正確方法?
- 6. 如何在頁面加載時將ajax加載到頁面中使用ajax
- 7. 如何檢測Firefox何時使用Python完成加載頁面?
- 8. Selenium中的時間頁面加載時間
- 9. 顯示用ajax加載頁面時的加載時間
- 10. 使用帶滑動效果的ajax在wordpress中加載頁面
- 11. 網頁測量頁面加載時間
- 12. Selenium中的頁面加載超時
- 13. 使用selenium webdriver查找webelements在網頁中的加載時間
- 14. 不要等待使用Python中的Selenium加載頁面
- 15. 帶有外部頁面的jQuery ajax加載頁面
- 16. 如何檢測頁面是否完全加載到Selenium中?
- 17. 在帶有ajax的加載頁面中運行javascript
- 18. 當頁面加載時也使用AJAX?
- 19. cefSharp整個頁面加載時檢測
- 20. 實時檢測iframe頁面已加載
- 21. 停止頁面加載Python/Selenium/PhantomJS
- 22. Selenium等待頁面加載python
- 23. 測量ajax加載時間
- 24. 測量ASP.NET頁面加載時間
- 25. Selenium(java):頁面在測試運行時不加載css和js
- 26. 如何確定何時完成頁面加載以測量加載時間
- 27. 在Ruby on Rails中顯示AJAX頁面的'加載時間'秒
- 28. 如何測量使用硒或C#加載頁面的確切時間?
- 29. 加載頁面時,如何在jquery中發送帶有ajax的發佈數據?
- 30. 用php selenium報告頁面加載時間