《手把手教你》系列進階篇之1-python+ selenium自動化測試 - python基礎掃盲(詳細教程)


1. 簡介

  如果你從一開始就跟着宏哥看博客文章到這里,基礎篇和練習篇的文章。如果你認真看過,並且手動去敲過每一篇的腳本代碼,那邊恭喜你,至少說你算真正會利用Python+Selenium編寫自動化腳本了,你基本掌握了Selenium中webdriver的大部分常用的方法函數。有大佬曾經說過,自動化測試大概可以分三個層次:

1. 手工測試用例轉換成自動化測試腳本的過程

2. 能設計自動化測試框架,至少能夠維護自動化測試框架。

3. 流程自動化方案設計,例如,一鍵打包,自動開始測試,自動發送測試報告,自動運維部署上線等。

通過前邊文章的基礎和練習講解,學習到這個時間節點,應該是完整介紹了手工測試用例裝換成自動化測試腳本這一個初級水平,學到這里,你已經具備了能夠編寫自動化測試腳本的能力。

在開始介紹設計簡單的自動化測試框架之前,我想在這個節點,插入一個新章節,叫Python+Selenium進階篇,主要是介紹一些設計框架的前提技能和基本Python編寫代碼的能力。這些能力包括但不限於以下內容:

1. 主流Python開發IDE工具的基本使用,例如Pycharm

2. Python中模塊,類和對象的具體代碼講解。

3. Selenium 常見方法的二次封裝。

4. 自定義方法的封裝和方法的調用-瀏覽器引擎類。

5. Python讀寫配置文件介紹

6. Python如何獲取系統時間和時間的格式化處理。

7. Python中常見字符串切割處理。

8. Python自定義一個日志生成方法封裝。

9. Selenium中一個截圖方法的封裝。

10. Python中繼承的使用。

通過介紹以上進階技能學習后,我們才可以,或者有能力去思考和動手去設計一個簡單的自動化測試框架。

2. pycharm安裝

  在Python開發過程中,比較流行,很優秀的一款IDE工具-PyCharm,這里關於它的介紹就一句話,它就相當於Java開發中的Eclipse軟件一樣。有些人說,Eclipse上可以通過安裝插件擴展來支持Python的代碼編寫,雖然可以這樣,但是我強烈建議,你本來就是

學習,為啥不選擇一個符合大眾的選擇工具呢,不管你用沒有用戶Eclipse,在這里,你將要用PyCharm進行自動化測試框架的開發。

這里宏哥就不廢話也不啰嗦了,可以參考宏哥這篇文章:手把手的教你安裝PyCharm --Pycharm安裝詳細教程(一)(非常詳細,非常實用)里邊有詳細的安裝步驟。

3. pycharm簡單使用

3.1 創建一個包,或者文件夾,或者python文件

如何創建一個包,或者文件夾,或者python文件,請看下圖:

 

3.2  設置工作面板中的字體

如何設置工作面板中的字體:

點擊File-Settings,調出設置面板:

 

3.3 設置代碼面板中背景顏色

如何設置代碼面板中背景顏色成綠豆色,據說綠豆色養眼,護眼,綠豆色用RGB表示:C7EDCC

 

3.4 多行注釋快捷鍵

在PyCharm如何多行注釋: 選中多行代碼,ctrl+/

3.5 運行代碼

在PyCharm如何運行代碼:點擊菜單欄綠色三角 或者,在代碼面板,右鍵,選中Run  xxx

好了這里就簡單的介紹一下,自己慢慢的用着用着熟練就好了。用一時一時爽,一直用一直爽!!!

4. Python中類/函數/模塊的簡單介紹和方法調用

  前邊小章節介紹了PyCharm的基本使用,接下來我們的腳本代碼都在這個PyCharm這個編輯器里寫。好處有很多,項目文件結構層次清晰,寫代碼的時候會自動化提示和補全。這里,我們在昨天創建的項目下,新建一個包,然后在包下面新建一個demo.py文

件。抄寫以下代碼到你的環境里,嘗試運行下,看看有沒有問題。

關於Python中類和函數及方法的調用,我們寫在這個demo.py文件,具體代碼如下:

4.1 代碼實現:

4.2 參考代碼:

# coding=utf-8🔥

# 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行

# 2.注釋:包括記錄創建時間,創建人,項目名稱。
'''
Created on 2019-12-11
@author: 北京-宏哥   QQ交流群:705269076
Project: 《手把手教你》系列進階篇之1-python+ selenium自動化測試 - python基礎掃盲
'''

# 3.導入模塊

class ClassA(object):

    string1 = "這是一個字符串。"

    def instancefunc(self):
        print ('這是一個實例方法。')
        print (self)

    @classmethod
    def classfunc(cls):
        print ('這是一個類方法。')
        print (cls)

    @staticmethod
    def staticfun():
        print ('這是一個靜態方法。')


test = ClassA() # 初始化一個ClasssA的對象,test是類ClassA的實例對象
test.instancefunc() # 對象調用實例方法

test.staticfun() # 對象調用靜態方法

test.classfunc() # 對象調用類方法

print (test.string1) # 對象調用類變量

ClassA.instancefunc(test) # 類調用實例方法,需要帶參數,這里的test是一個對象參數
ClassA.instancefunc(ClassA) # 類調用實例方法,需要帶參數,這里的ClassA是一個類參數
ClassA.staticfun() # 類調用靜態方法
ClassA.classfunc() # 類調用類方法

4.3 運行結果:

運行代碼后,控制台打印如下圖的結果

備注:

先運行下代碼是否會報錯,然后嘗試自己去理解下。主要有以下幾點內容

1. 類的定義,class開頭的就表示這是一個類,小括號里面的,表示這個類的父類,涉及到繼承,默認object是所有類的父類。python中定義類,小括號內主要有三種:1. 具體一個父類,2. object 3. 空白

2. 函數或方法的定義, def開頭就表示定義一個函數,方法包括,實例方法,類方法,靜態方法,注意看類方法和靜態方法定義的時候上面有一個@標記。

3. 對象調用方法和類調用方法的使用。

       這篇講的東西,確實比較難理解。如果學過java的人,可能會好理解類和對象,以及面向對象的概念。Python同時支持面向過程變成和面向對象編程,所有python中也有類和對象等概念。一般來說,概念的東西比較繞,如果你Python基礎沒有看到這部分,那邊

請回去《看笨方法學python》中關於這塊的介紹。如果有看過了,還是不理解,我只能告訴你,繼續學下去,你現在哪怕死記住這些概念和他們的基本使用。等到后面,框架設計部分,你會慢慢體會到這些基本概念的實際用法,你跟着寫了代碼后,會有助於你自己

的理解和提高。

       最后,來說下python中的模塊,在python中,你新建一個demo.py文件,那么一個.py文件可以說是一個模塊,一個模塊中,可以定義多個class,模塊中也可以直接定義函數。和java一樣,訪問不同包下的類和方法之前,需要導入相關路徑下的包。例如from

selenium import webdriver  這個導入語句,我們知道webdriver這個接口是在selenium的模塊下。

本小章節的學習目的,就是會用函數或者類來編寫我們之前寫過的腳本。那么接下來就和宏哥來體驗一下吧。

5. 趁熱打鐵or牛刀小試

  這里宏哥以下用百度搜索舉例,模仿上面用類調用實例的方法來寫這個腳本,可能看起來比較啰嗦,但是代碼多了,你就會體會到類的作用,注意這里self指的是當前BaiduSearch這個類本身:

5.1 代碼實現:

5.2 參考代碼:

# coding=utf-8🔥

# 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行

# 2.注釋:包括記錄創建時間,創建人,項目名稱。
'''
Created on 2019-12-11
@author: 北京-宏哥   QQ交流群:705269076
Project: 《手把手教你》系列進階篇之1-python+ selenium自動化測試 - python基礎掃盲
'''

# 3.導入模塊

import time
from selenium import webdriver


class BaiduSearch(object):
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.implicitly_wait(10)

  def open_baidu(self):
      self.driver.get("https://www.baidu.com")
      time.sleep(1)

  def test_search(self):
      self.driver.find_element_by_id('kw').send_keys("selenium")
      time.sleep(1)
      print (self.driver.title)
      try:
          assert 'selenium' in self.driver.title
          print ('Test pass.')

      except Exception as e:
          print ('Test fail.')
    self.driver.quit()

baidu = BaiduSearch()
baidu.open_baidu()
baidu.test_search()

5.3 運行結果:

運行代碼后,控制台打印如下圖的結果

6. 小結

   好了,今天的分享就到這里吧!!!謝謝各位的耐心閱讀。

 

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

 


免責聲明!

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



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