Python的selenium自動化測試過程中模態對話框彈出問題解決方法

selenium自動化測試工具可以模擬人的部分操作,包括點擊、拖動和填寫等,用起來很方便。但它並不是萬能的,而且現在selenium對模態對話框的處理還不是很完善。當然,對於一些簡單的彈框,還是有方法處理的。

比如下面這種:

                                                     

driver.find_element_by_xpath(login_button).click()  # 點擊登錄
while True: # 直到輸入正確的驗證碼以後,才繼續後續流程
    try:
        driver.switch_to.alert.accept() # 點擊確定按鈕
        # switch_to_alert()        --定位彈出對話框
        # text()               --獲取對話框文本值
        # accept()             --相當於點擊“確認”
        # dismiss()            --相當於點擊“取消”
        # send_keys()          --輸入值(如果有輸入對話框)
    except NoAlertPresentException: # 沒有彈窗,說明驗證碼輸入正確,退出循環
        break
    else:
        print("請在網頁重新輸入正確的驗證碼!")
        time.sleep(LONG_PROTECTION_TIME / 2)  # 等待重新輸入正確的驗證碼
        driver.find_element_by_xpath(login_button).click()  # 點擊登錄

但是如果碰到下面這種,就沒那麼容易處理了:

                                               

這種彈窗屬於瀏覽器的一些插件, 用F12也無法定位彈窗裏邊的元素。雖然selenium也有按照座標進行點擊的功能,但讓selenium按照座標自動去點擊彈窗裏邊的東西就更困難了,而且還涉及到文本框的填寫等。

這個時候,就是該用 time.sleep()的時候了,留出足夠長的等待時間,讓人工手動對彈窗進行處理,只要保證selenium在進行下一步操作之前把彈框給點掉,後續流程就可以繼續正常運行。當然,人的操作不能與selenium中的程序處理操作相沖突,不能對selenium的後續處理邏輯造成影響。

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