標籤:content selector logs web miss 簡單 nbsp 驅動 python
#之前發的 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 #建立Firefox瀏覽器驅動執行個體,啟動時載入自訂的profile11 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.driver17 #定位部落格園首頁的 退出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 #將焦點切換到當前頁面彈出的警告,並擷取彈出框的text22 alert = driver.switch_to_alert()23 alert_text = alert.text24 #檢查點擊退出時,是否彈出提示資訊 確認退出嗎?25 self.assertTrue(alert_text == ‘確認退出嗎?‘)26 alert.accept() #點擊確定27 28 @classmethod29 def tearDownClass(cls):30 cls.driver.quit()
(六) 使用範例程式碼需要配置Firefox的profile(如)
或者百度 Python selenium profile
配置好後,選擇自訂的profile開啟Firefox,登入一次部落格園(勾選自動登入),範例程式碼就可以運行了。
Python+Selenium筆記(九):操作警告和彈出框