1. 簡介
今天我們繼續前邊的練習,學習和練習一下:如何使用webdriver方法獲取操作復選框-CheckBox、測試不同的分辨率、如何斷言title、如何獲取某一個元素的text屬性值等等,這些小練習,來鞏固基礎。
2.操作復選框-Checkbox
本小節介紹Selenium中,如何操作復選框-Checkbox,最終的方法還是click()。
本來想還是繼續采用for語句來把所有的復選框勾選一遍,例如這樣的場景:注冊一個網站勾選身份或者職業的時候,由於沒有找到合適的demo網站。這里還是以百度舉例,登錄時,勾選下次自動登錄:
(1)訪問百度主頁面,點擊百度首頁的“登錄”,xpath定位如下:
(2)點擊“用戶名登錄”,xpath定位如下圖:
(3)點擊下次自動登錄點選按鈕,xpath定位如下:
相關腳本代碼如下:
2.1 代碼實現:
2.2 參考代碼:
# coding=utf-8🔥 # 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行 # 2.注釋:包括記錄創建時間,創建人,項目名稱。 ''' Created on 2019-12-04 @author: 北京-宏哥 QQ交流群:705269076 Project: python+ selenium自動化測試練習篇5 ''' # 3.導入模塊 import time from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get('https://www.baidu.com') driver.implicitly_wait(8) driver.find_element_by_xpath("//*[@id='u1']/a[7]").click() time.sleep(1) driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__footerULoginBtn']").click() time.sleep(1) driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__memberPass']").click() time.sleep(1) driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__memberPass']").click()
2.3 運行結果:
運行代碼后,控制台打印如下圖的結果
由於這個勾選是默認選中的,這里方便觀察點擊效果,點擊了兩次。如果有多個復選框,考慮用for循環,參考前面radio button的方法。
3. 測試不同分辨率
本小節來學習下如何通過Selenium方法,設置符合不同測試場景瀏覽器窗口大小。例如,你有一台機器,最大支持1366*768,你完全可以利用這個機器測試不同分辨率下的場景。
相關測試腳本代碼如下:
3.1 代碼實現:
3.2 參考代碼:
# coding=utf-8🔥 # 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行 # 2.注釋:包括記錄創建時間,創建人,項目名稱。 ''' Created on 2019-12-04 @author: 北京-宏哥 QQ交流群:705269076 Project: python+ selenium自動化測試練習篇5 ''' # 3.導入模塊 import time from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() # 全屏 driver.get('https://www.baidu.com') time.sleep(1) print (driver.get_window_size()) driver.set_window_size(1280,800) # 分辨率 1280*800 time.sleep(1) print (driver.get_window_size()) driver.set_window_size(1024,768) # 分辨率 1024*768 time.sleep(1) print (driver.get_window_size())
3.3 運行結果:
運行代碼后,控制台打印如下圖的結果
4. title斷言方法
本小節介紹一個Selenium中頁面title斷言方法,這個在以后的斷言中會用到,大致都是換湯不換葯,照貓畫虎就可以了,但是在這里一定要認真學習和練習,后邊應用起來才回得心應手。
相關腳本代碼如下:
4.1 代碼實現:
4.2 參考代碼:
# coding=utf-8🔥 # 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行 # 2.注釋:包括記錄創建時間,創建人,項目名稱。 ''' Created on 2019-12-04 @author: 北京-宏哥 QQ交流群:705269076 Project: python+ selenium自動化測試練習篇5 ''' # 3.導入模塊 import time from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get('https://www.baidu.com') time.sleep(1) # 方法一 try: assert u"百度一下" in driver.title print ('Assertion test pass.') except Exception as e: print ('Assertion test fail.', format(e)) # 方法二 if u"百度一下,你就知道" == driver.title : print ('Assertion test pass.') else: print ('Assertion test fail.') print(driver.title)
4.3 運行結果:
運行代碼后,控制台打印如下圖的結果
方法一,是利用python中Assert方法,采用包含判斷,方法二是通過if方法,采用完全相等方法,建議選擇第一種方法。
u"百度一下,你就知道"
這u代表unicode的意思,由於我們這里采用了python 2, 如果你使用pyn3 就不需要,在Python3中,字符串默認采用unicode存儲。
5. 獲取某一個元素的text屬性值
本小節介紹如何通過Selenium方法來獲取某一個元素的text屬性值。在很多自動化測試腳本中,需要多次獲取元素的text值,拿過來進行對比和匹配。例如,在一個登陸界面,如果不輸入用戶名和密碼,直接點擊登錄,肯定會有相關錯誤提醒。這個錯誤,我們需
要通過selenium抓取出來,和需求說明文檔中的描述去進行匹配,如果匹配,測試成功,否則失敗。
這里用百度登錄舉例:
需要通過Selenium腳本去自動判斷是否顯示錯誤文字“請您填寫手機/郵箱/用戶名”,前邊已經定位到這個頁面,這里就不再贅述了,這里需要定位“登錄”按鈕,定位text的屬性值。
(1)定位“登錄”按鈕
(2)定位text的屬性值
相關腳本代碼如下:
5.1 代碼實現:
5.2 參考代碼:
# coding=utf-8🔥 # 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行 # 2.注釋:包括記錄創建時間,創建人,項目名稱。 ''' Created on 2019-12-04 @author: 北京-宏哥 QQ交流群:705269076 Project: python+ selenium自動化測試練習篇5 ''' # 3.導入模塊 import time from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(6) driver.get("http://www.baidu.com/") time.sleep(1) #點擊百度首頁“登錄”按鈕 driver.find_element_by_xpath("//*[@id='u1']/a[7]").click() time.sleep(1) #點擊“用戶名登錄” driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__footerULoginBtn']").click() #點擊登錄頁面的“登錄”按鈕 driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__submit']").click() # 斷言方法一 try : error_message = driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_10__error' and text()='請您輸入手機/郵箱/用戶名']").is_displayed() print ("Test pass. the error message is display.") except Exception as e: print ("Test fail.", format(e)) # 斷言方法二,本文重點介紹方法 error_mes = driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__error']").text try: assert error_mes == u'請您輸入手機/郵箱/用戶名' print ('Test pass.') except Exception as e: print ("Test fail.", format(e))
5.3 運行結果:
運行代碼后,控制台打印如下圖的結果
總結:
要獲取到目標元素的text的值,需要定義一個目標元素element,然后通過element.text方法得到字符串,注意不是element.text(),這個方法是沒有帶小括號的。上面介紹了兩個方法,方法一是,直接把字段寫入XPath表達式,如果通過該XPath能定位到元素,說明這個
錯誤字段已經在頁面顯示;方法二是通過該目標元素節點,然后通過element.text得到值,在拿得到的text值取和期待的結果去字符串匹配。建議在自動化測試腳本開發中,采用第二個方法。
6.小結
好了,今天的練習就到這里,希望大家好好的練習和理解。
您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得點波 推薦 不要忘記哦!!!