《手把手教你》系列練習篇之5-python+ selenium自動化測試(詳細教程)


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.小結

好了,今天的練習就到這里,希望大家好好的練習和理解。 

 

您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得點波 推薦 不要忘記哦!!!


免責聲明!

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



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