selenium自動化測試入門n Alert/Confirm/Prompt 彈出窗口處理

一、Alert/Confirm/Prompt彈出窗口特徵說明

Alert彈出窗口:

提示用戶信息只有確認按鈕,無法通過頁面元素定位,不關閉窗口無法在頁面上做其他操作。

Confirm 彈出窗口:

有確認和取消按鈕,該彈出窗口無法用頁面元素定位,不關閉窗口無法在頁面上做其他操作。

Prompt彈出窗口:

有輸入框、確認和取消按鈕,該彈出窗口無法用頁面元素定位,不關閉窗口無法在頁面上做其他操作。

注意:3種窗口為瀏覽器自帶的窗口,該窗口無法定位到元素,能定位到元素需要使用WebElement操作。

二、Alert/Confirm/Prompt彈出窗口操作

第一步:需要獲取彈出窗口,兩種方法 與Alert(driver)

alert=driver.switch_to.alertn

from selenium.webdriver.common.alert import Alertnalert=Alert(driver)n

第二步:對獲取到的窗口進行操作,常用方法如下:

alert.text() # 獲取窗口信息nalert.accept() # 確認nalert.dismiss() # 取消nalert.send_keys(keysToSend) # 輸入信息n

alert.authenticate(username, password) # 用戶認證信息登錄,已有確認操作

三、實例說明

創建下面3個html文件

alertTest.html

<html>n<head>n <title>Alert Test</title>n <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>n</head>n<script type="text/javascript">nfunction showAlert(){n alert(document.from1.t1.value);n}nfunction showMultilineAlert(){n alert("你必須糾正以下錯誤:n你必須輸入XXXX.n你必須做XXXX.n你必須XXXX");n}n</script>n<body>n<h2>Alert Test</h2>n<form name="from1">n <input type="text" name="t1" value="可以輸入 Alert 信息"><br><br>n <input type="button" name="button1" value="點擊Alert獲取輸入框信息" onclick="showAlert()"><br><br>n <input type="button" name="button2" value="Alert自帶多行文本信息" onclick="showMultilineAlert()"><br>n</form>n</body>n</html>n

confirmTest.html

<html>n<head>n <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>n <title>Confirm Test</title>n</head>n<script type="text/javascript">nfunction showConfirm(){n var t1 = document.from1.t1;n if (confirm("請點擊確認或取消")){n t1.value = "確認";n }else{n t1.value = "取消";n }n}n</script>n<body>n<h2>Confirm Test</h2>n<form name="from1">n <input type="button" name="button1" value="點擊Confirm按鈕" onclick="showConfirm()"><br><br>n <input type="text" name="t1">n</form>n</body>n</html>n

promptTest.html

<html>n<head>n <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>n <title>Prompt Test</title>n</head>n<script type="text/javascript">n function showPrompt(){n var t1 = document.from1.t1;n t1.value = prompt("請輸入信息,信息將填入頁面輸入框.");n }n</script>n<body>n<h2>Prompt Test</h2>n<form name="from1">n <input type="button" name="button1" value="點擊Prompt按鈕" onclick="showPrompt()"><br><br>n <input type="text" name="t1">n</form>n</body>n</html>n

示例1:Alert彈窗獲取文本與確認操作

from selenium import webdrivernfrom selenium.webdriver.support.wait import WebDriverWaitnfrom selenium.webdriver.support.expected_conditions import alert_is_presentnfrom selenium.webdriver.common.alert import Alertnndriver = webdriver.Chrome()ndriver.get(rE:XXXalertTest.html)ndriver.find_element_by_name(button1).click() # 點擊第一個按鈕nWebDriverWait(driver, 5).until(alert_is_present()) # 等待彈出窗口出現nalert = driver.switch_to.alert # 獲取彈出窗口ntext1 = alert.text # 獲取窗口文本信息nprint(text1) # 列印窗口文本信息nalert.accept() # 確認nprint(----------)ndriver.find_element_by_name(button2).click() # 點擊第二個按鈕nWebDriverWait(driver, 5).until(alert_is_present()) # 等待彈出窗口出現nalert = Alert(driver) # 獲取彈出窗口ntext1 = alert.text # 獲取窗口文本信息nprint(text1) # 列印窗口文本信息nalert.accept() # 確認ndriver.quit()n

注意:WebDriverWait(driver, 5).until(alert_is_present()) 加上這個可提高代碼的可靠性

示例2:Comfirm彈窗獲取文本、確認、取消操作

driver = webdriver.Chrome()ndriver.get(rE:XXXconfirmTest.html)ndriver.find_element_by_name(button1).click() # 點擊按鈕nWebDriverWait(driver, 5).until(alert_is_present()) # 等待彈出窗口出現nalert = driver.switch_to.alert # 獲取彈出窗口nprint(alert.text) # 列印窗口信息nalert.accept() # 確認ntime.sleep(2)nndriver.find_element_by_name(button1).click() # 點擊按鈕nWebDriverWait(driver, 5).until(alert_is_present()) # 等待彈出窗口出現nalert = driver.switch_to.alert # 獲取彈出窗口nalert.dismiss() # 取消ntime.sleep(2)ndriver.quit()n

示例3:Prompt 彈窗獲取文本、輸入內容、確認操作

driver = webdriver.Chrome()ndriver.get(rE:XXXpromptTest.html)ndriver.find_element_by_name(button1).click() # 點擊按鈕nWebDriverWait(driver, 5).until(alert_is_present()) # 等待彈出窗口出現nalert = Alert(driver) # Alert 獲取彈出窗口nalert.send_keys(selenium Alert彈出窗口輸入信息) # 輸入信息nalert.accept() # 確認ntime.sleep(2)ndriver.quit()n

推薦閱讀:

零基礎如何學習自動化測試
4.3 通過selenium 模擬瀏覽器抓取
mac下怎麼搭建selenium python環境?
python selenium 如何查看網頁的源代碼 ?
Pycharm—FileNotFoundError: [WinError 2] 系統找不到指定的文件?

TAG:软件测试 | 自动化测试 | Selenium |