selenium之處理alert彈出對話框


在完成某些操作時會彈出對話框來提示,主要分為"警告消息框","確認消息框","提示消息對話"三種類型的對話框。

   1.警告消息框(alert)
  警告消息框提供了一個"確定"按鈕讓用戶關閉該消息框,並且該消息框是模式對話框,也就是說用戶必須先關閉該消息框然后才能繼續進行操作。

  2.確認消息框(confirm)

  確認消息框向用戶提示一個"是與否"問題,用戶可以根據選擇"確定"按鈕和"取消"按鈕。

  3.提示消息對話(prompt)
  提示消息框提供了一個文本字段,用戶可以在此字段輸入一個答案來響應您的提示。該消息框有一個"確定"按鈕和一個"取消"按鈕。選擇"確認"會響應對應的提示信息,選擇"取消"會關閉對話框。

selenium 提供switch_to_alert()方法定位到 alert/confirm/prompt對話框。使用 text/accept/dismiss/send_keys 進行操作,這里注意的是send_keys只能對prompt進行操作。

  • switch_to_alert()   #定位彈出對話
  • text()                   #獲取對話框文本值
  • accept()                   #相當於點擊"確認"
  • dismiss()                  #相當於點擊"取消"
  • send_keys()              # 輸入值,這個alert和confirm沒有輸入對話框,所以這里就不能用了,所以這里只能使用在prompt這里

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
        <title></title>
    </head>
    <body>
        <div align="center">
        <h4>hello girl</h4>
        <input type="button" onclick="showPro()" value="輸入框彈窗按鈕"/>
        <input type="button" onclick="showAlert2()" value="提示彈窗按鈕"/>
        <input type="button" onclick="showAlert()" value="確認彈窗按鈕"/><br><br><br>
        <span id="textSpan"></span>
        
        </div>
    </body>
    <script>
        function showAlert(){            
            document.getElementById("textSpan").innerHTML="";
            if(confirm("你是帥哥嗎?")){
                document.getElementById("textSpan").innerHTML="<font style='color: red;'>您為何如此自信?</font>";
            }else{
                document.getElementById("textSpan").innerHTML="<font style='color: red;'>您為何如此謙虛?</font>";
            }
            
        }
        function showPro(){
            document.getElementById("textSpan").innerHTML="";
            con = prompt("輸入1為聰明,輸入2為笨");
            if(con==1){
                document.getElementById("textSpan").innerHTML="<font style='color: green;'>真聰明啊</font>";
            }else if(con==2){
                document.getElementById("textSpan").innerHTML="<font style='color: green;'>真笨啊</font>";
            }else{
                document.getElementById("textSpan").innerHTML="<font style='color: red;'>您沒有按要求輸入,請重新輸入</font>";
            }
        }
        function showAlert2(){
            document.getElementById("textSpan").innerHTML="";
            alert("用我三世煙火,換你一世迷離");
        }
    </script>
</html>

下面的三個例子,主要來演示如何處理上面說的三種對話框。 

 1.處理alert對話框

#-*-coding:utf-8 -*-
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('file:///C:/Users/hunk/Desktop/alter.html')
'''獲取alert對話框的按鈕,點擊按鈕,彈出alert對話框'''
driver.find_element_by_xpath('/html/body/div/input[2]').click()
'''獲取alert對話框''' alert = driver.switch_to_alert() '''添加等待時間'''
time.sleep(2)
'''獲取警告對話框的內容'''
print (alert.text)  #打印警告對話框內容
alert.accept()   #alert對話框屬於警告對話框,我們這里只能接受彈窗
'''添加等待時間'''
time.sleep(2)
driver.quit()
#模態對話框 Alert
#不同元素的處理
from selenium import webdriver
from time import sleep

#程序入口
if __name__ == "__main__":
    #初始化Driver
    driver = webdriver.Chrome()
    #打開本地文件
    driver.get("file:///C:/UI/dialogs.html")
    button1 = driver.find_element_by_id("alert")
    button1.click()
    sleep(1)
    #出現模態對話框
    alert = driver.switch_to.alert()
    #接受
    alert.accept()
    sleep(1)
    #alert頁面信息,斷言中
    button1.click()  #點擊按鈕
    print(alert.text)  打印對話框文本值
    sleep(1)
    # 取消
    alert.dismiss() # "取消"
    sleep(1)
    driver.quit()

 2.處理confirm對話框

#-*-coding:utf-8 -*-
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('file:///C:/Users/hunk/Desktop/alter.html')
'''獲取confirm對話框的按鈕,點擊按鈕,彈出confirm對話框''' driver.find_element_by_xpath('/html/body/div/input[3]').click() '''獲取confirm對話框''' dialog_box = driver.switch_to_alert() '''添加等待時間'''
time.sleep(2)
'''獲取對話框的內容'''
#打印警告對話框內容
print (dialog_box.text)  
'''點擊【確認】顯示"您為何如此自信?"'''
dialog_box.accept()   #接受彈窗#打印接受對話框后的提示信息
print (driver.find_element_by_xpath('//*[@id="textSpan"]/font').text)
time.sleep(2)
'''再次獲取confirm對話框的按鈕,點擊按鈕,彈出confirm對話框''' driver.find_element_by_xpath('/html/body/div/input[3]').click() '''再次獲取confirm對話框''' dialog_box = driver.switch_to_alert() '''點擊【取消】顯示"您為何如此謙虛?"'''
time.sleep(2)
dialog_box.dismiss() #關閉獲取取消對話框
print (driver.find_element_by_xpath('//*[@id="textSpan"]/font').text)
driver.quit()

3.處理prompt對話框

#-*-coding:utf-8 -*-
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
'''獲取對話框輸入2,並且點擊【確認】,文本框內提示<左哥是真笨啊>,點擊【取消】文本框內提示<您沒有按要求輸入,請重新輸入>'''
driver.get('file:///C:/Users/hunk/Desktop/alter.html')
'''獲取prompt對話框的按鈕,點擊按鈕,彈出confirm對話框''' driver.find_element_by_xpath('/html/body/div/input[1]').click() '''獲取prompt對話框''' dialog_box = driver.switch_to_alert() '''添加等待時間'''
time.sleep(2)
'''獲取對話框的內容'''
print (dialog_box.text)  #打印警告對話框內容
dialog_box.send_keys("2")  #彈出框內輸入2
dialog_box.accept()  #接受
print (driver.find_element_by_xpath('//*[@id="textSpan"]/font').text)  #獲取關閉彈窗結果  #獲取確認彈窗結果
'''這里等待幾秒在測試取消'''
time.sleep(2)
#************************點擊【取消】,並且獲取顯示結果**********************
driver.find_element_by_xpath('/html/body/div/input[1]').click()
'''獲取prompt對話框'''
dialog_box = driver.switch_to_alert()
'''添加等待時間'''
time.sleep(2)
dialog_box.dismiss()  #關閉對話框
print (driver.find_element_by_xpath('//*[@id="textSpan"]/font').text)  #獲取關閉彈窗結果
time.sleep(2)
driver.quit()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM