簡體   English   中英

如何從socket.timeout錯誤中恢復是硒(python)

[英]how to recover from socket.timeout error is selenium(python)

我正在使用硒2.44和firefox 34.0,該測試是在顯示不一致行為的站點上進行的:某些頁面加載導致socket.timeout錯誤 (firefox加載圖標不斷旋轉)。 發生此錯誤后,對驅動程序對象的任何調用都會產生一個httplib.CannotSendRequest,因此我無法從錯誤中恢復並繼續測試流程。

根據此: WSGI中的httplib CannotSendRequest錯誤

驅動程序對象可能正在等待加載過程完成,並且不允許訪問該對象。

問題是如何從此錯誤中恢復?

理想的解決方案是關閉出現問題的窗口,然后加載下一頁繼續進行測試。 問題是我無法使用driver.close(),因為按照描述,無法訪問驅動程序對象。 driver.current_url也無法訪問,因此我無法找到當前的駕駛員測試位置。 我正在考慮的最后一招是在每次加載之前存儲所有窗口句柄的最后URL,並在異常發生時重新創建驅動程序並加載所有窗口(該窗口在出現錯誤的窗口之后)。

那當然是次優的解決方案,但這是不可避免的嗎?

我的最終解決方案如問題中所述,我剛剛創建了一個新的webdriver實例,並繼續在其中加載頁面。 有問題的Webdriver窗口(有時不止一個)一直保持打開狀態,直到運行結束,但該窗口將被忽略。 如果您有多個頁面,則可以存儲所有窗口的URL(在driver.get('URL')命令之前,並在出現此錯誤時重新加載它們),這不是最佳解決方案,但它可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM