(一) 前言 開發人員使用JavaScript 警告或者模態對話框來提示校驗錯誤信息、報警信息、執行操作後的返回信息,甚至用來接收輸入值等。 (二) Alert類 Selenium WebDriver 通過Alert 類來操控 JavaScript 警告。 (三) Alert功能及方法 功能/屬性 ...
#之前發的 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打開火狐,登錄一次博客園(勾選自動登錄),示例代碼就可以運行了。