selenium之chrome中alert無法捕獲的可能原因

       當利用selenium模擬chrome瀏覽器時,對於彈窗alert的處理需要特別注意,由於在chorme中,一旦alert出現,則整個頁面便會鎖定在alert元素上,其他的元素都無法獲取和操作,所以必須要先處理alert。

       對於alert無法捕獲,首先最重要的自然是要注意是否已經交換了瀏覽器驅動driver的句柄(handle),由於這種彈窗出現的語境常常是打開新網頁後在新網頁出現的,所以必須先把driver的控制頁面換到新的頁面,纔可以捕獲新頁面的元素,因此,這是最容易忽略也是最可能發生的情況。所以如果發現alert始終無法捕獲,先check一下是否把驅動的控制權放置在了正確的句柄上。

       除此之外,由於腳本中經常會用到休眠,以等待網頁加載,這時如果alert是在休眠期間就出現了,那麼腳本在休眠結束後,可能無法再進入頁面去間接捕獲,這時可以直接用alert_is_present()或driver.switch_to_alert()語句捕獲。如果結合WebDriverWait進行顯式等待,那麼可能儘管其中的條件語句是alert_is_present(),也無法進入頁面捕獲。所以這裏要注意,如果遇到這種情況,則休眠不要過長,保證在alert出現之前就執行WebDriverWait顯式等待語句,並且掃描頻率要足夠高,如果需要休眠一定的時間,便直接用alert_is_present()進行捕獲;或者直接不要休眠,直接用WebDriverWait即可,當然也要足夠高的掃描頻率;如果還是不行,則利用異常捕獲語句,捕獲timeout異常,然後再在except語句中使用alert_is_present()語句捕獲alert。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章