我使用Selenium WebDriver從使用Ajax動態加載它的站點獲取一些內容。我創建了一個自定義的Wait類來檢查頁面上的條件,以確保頁面在繼續之前已經加載。我使用FluentWait將輪詢間隔設置爲2並將超時設置爲10.但是,我注意到它在時間增量0時第一次檢查,然後等待2秒如果條件爲假,然後再次檢查等。Selenium FluentWait在開始輪詢前等待
由於頁面需要加載一些時間,所以在第一次檢查時它總是錯誤的,但通常在第二次檢查時是正確的。有沒有什麼辦法可以等第2秒之前檢查第一次?即如果有必要,在時間2,4和6檢查,而不是在0,2,4和6?
感謝, BSG
編輯 我一直在問提爲什麼我想這種行爲 - 畢竟,我使用的是等待它的意思的使用方式。我從中得到的好處第一次返回true:WebDriver顯然每次向瀏覽器發出命令時都會打開一個新的套接字。無論出於何種原因,這些套接字在執行調用後並不總是關閉。當在很短的時間內執行大量調用時(例如,當重複檢查某個條件時,這是Wait的作用),可能會用盡虛擬套接字,並且驅動程序崩潰。 (缺少足夠的虛擬套接字似乎是Windows 7上的一個已知問題,但我無法修改我的系統。)
我在短時間內發出的驅動程序調用的次數越少,將溢出可用套接字的數量。我觀察到,第一個檢查從不返回true,因此它只是無故打開一個套接字,使程序更可能崩潰。這就是爲什麼我想等待。我希望這個解釋對搜索信息的人有幫助,他們爲什麼一直在WebDriver中獲取SocketExceptions。
你應該提到你會有什麼優勢,首先檢查返回true。 –
我不完全確定爲什麼你需要打擾這一點 - 你正在使用'wait'來達到它的目的。 – Arran