一個程序沒有設置超時時間,就可以說是一段有缺陷的代碼。
讀取超時指的就是客戶端等待服務器發送請求的時間。(特定地,它指的是客戶端要等待服務器發送字節之間的時間。在 99.9% 的情況下這指的是服務器發送第一個字節之前的時間)。
簡單的說,連接超時就是發起請求連接到連接建立之間的最大時長,讀取超時就是連接成功開始到服務器返回響應之間等待的最大時長。
***************************************************************************************************************************************************
頁面元素等待處理。
顯性等待:
EC.presence_of_element_located((By.ID,"acdid"))
util.browser.find_element_by_id("acdid").click()
強制等待:
可以用sleep(3),但是不是最好的方法
隱性等待:# 隱性等待,最長等30秒
driver.implicitly_wait(
30
)
# 隱性等待和顯性等待可以同時用,但要注意:等待的最長時間取兩者之中的大者
******************************************************************************************************************************************
來自靈魂的拷問1:沒有設置超時時間,為什么沒有什么影響呢?
即使你不設置超時時間,在正常情況下,一個HTTP請求總是會返回結果,即使可能會耗時較長。對於一個負載不高的服務來說,潛在的問題沒有暴露出來。
來自靈魂的拷問2:什么情況下,沒有設置超時時間會造成嚴重的影響呢?
(1)與用戶操作相關的接口,如果不設置超時時間,將會出現長時間的無響應,嚴重影響用戶體驗。
(2)負載很高的系統,因為大量調用耗時長的接口,導致性能急劇下降,從而影響其他正常的業務。
(3)某些情況下,HTTP請求可能永遠都得不到響應,那么這部分系統資源就一直被占用,直到系統奔潰。