Python+Selenium筆記(九):操作警告和彈出框


#之前發的 driver.switch_to_alert() 這句雖然可以運行通過,但是會彈出警告信息(這種寫法3.x不建議使用)

 改成 driver.switch_to.alert就不會了。

(一) 前言

開發人員使用JavaScript 警告或者模態對話框來提示校驗錯誤信息、報警信息、執行操作后的返回信息,甚至用來接收輸入值等。

(二) Alert

Selenium WebDriver 通過Alert 類來操控 JavaScript 警告。

(三) Alert功能及方法

功能/屬性

簡單說明

text

獲取彈出窗口的提示信息(文本內容)

alert.text

 

方法

簡單說明

accept()

接受JS警告信息,單擊確定

dismiss()

接受JS警告信息,單擊取消

send_keys(value)

模擬給元素輸入信息

 

(四) Webdriver API補充說明(基於筆記7)

方法

簡單說明

switch_to_active_element()

返回當前焦點的對象

switch_to_alert()

把焦點切換至當前頁面彈出的警告

switch_to_default_content()

切換焦點至默認框架內

switch_to_frame()

通過索引、名稱和網頁元素,將焦點切換至指定的框架

switch_to_window()

切換焦點到指定的窗口

 

(五) 示例(檢查博客園首頁點擊退出是否彈出提示)

 1 import unittest
 2 from  selenium import webdriver
 3 class SignOut(unittest.TestCase):
 4 
 5     @classmethod
 6     def setUpClass(cls):
 7         #獲取自定義的 profile路徑
 8         cls.profile = webdriver.FirefoxProfile\
 9             (r'C:\Users\quanhua\AppData\Roaming\Mozilla\Firefox\Profiles\tnwjkr4m.selenium')
10         #創建火狐瀏覽器驅動實例,啟動時加載自定義的profile
11         cls.driver = webdriver.Firefox(cls.profile)
12         cls.driver.implicitly_wait(20)
13         cls.driver.maximize_window()
14         cls.driver.get('https://www.cnblogs.com/')
15     def test_sign_out(self):
16         driver = self.driver
17         #定位博客園首頁的 退出
18         span_userinfo = driver.find_element_by_css_selector('#span_userinfo')
19         sign_out_btn = span_userinfo.find_element_by_link_text('退出')
20         sign_out_btn.click()
21         #將焦點切換到當前頁面彈出的警告,並獲取彈出框的text
22         alert = driver.switch_to_alert()
23         alert_text = alert.text
24         #檢查點擊退出時,是否彈出提示信息  確認退出嗎?
25         self.assertTrue(alert_text == '確認退出嗎?')
26         alert.accept() #點擊確定
27 
28     @classmethod
29     def tearDownClass(cls):
30         cls.driver.quit()

 

(六) 使用示例代碼需要配置火狐的profile(如下圖)

或者百度  Python selenium profile

配置好后,選擇自定義的profile打開火狐,登錄一次博客園(勾選自動登錄),示例代碼就可以運行了。

 

 


免責聲明!

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



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