若是你從一開始就跟着宏哥看博客文章到這裏,基礎篇和練習篇的文章。若是你認真看過,而且手動去敲過每一篇的腳本代碼,那邊恭喜你,至少說你算真正會利用Python+Selenium編寫自動化腳本了,你基本掌握了Selenium中webdriver的大部分經常使用的方法函數。有大佬曾經說過,自動化測試大概能夠分三個層次:html
1. 手工測試用例轉換成自動化測試腳本的過程java
2. 能設計自動化測試框架,至少可以維護自動化測試框架。python
3. 流程自動化方案設計,例如,一鍵打包,自動開始測試,自動發送測試報告,自動運維部署上線等。web
經過前邊文章的基礎和練習講解,學習到這個時間節點,應該是完整介紹了手工測試用例裝換成自動化測試腳本這一個初級水平,學到這裏,你已經具有了可以編寫自動化測試腳本的能力。編程
在開始介紹設計簡單的自動化測試框架以前,我想在這個節點,插入一個新章節,叫Python+Selenium進階篇,主要是介紹一些設計框架的前提技能和基本Python編寫代碼的能力。這些能力包括但不限於如下內容:瀏覽器
1. 主流Python開發IDE工具的基本使用,例如Pycharm框架
2. Python中模塊,類和對象的具體代碼講解。運維
3. Selenium 常見方法的二次封裝。編輯器
4. 自定義方法的封裝和方法的調用-瀏覽器引擎類。函數
5. Python讀寫配置文件介紹
6. Python如何獲取系統時間和時間的格式化處理。
7. Python中常見字符串切割處理。
8. Python自定義一個日誌生成方法封裝。
9. Selenium中一個截圖方法的封裝。
10. Python中繼承的使用。
經過介紹以上進階技能學習後,咱們才能夠,或者有能力去思考和動手去設計一個簡單的自動化測試框架。
在Python開發過程當中,比較流行,很優秀的一款IDE工具-PyCharm,這裏關於它的介紹就一句話,它就至關於Java開發中的Eclipse軟件同樣。有些人說,Eclipse上能夠經過安裝插件擴展來支持Python的代碼編寫,雖然能夠這樣,可是我強烈建議,你原本就是
學習,爲啥不選擇一個符合大衆的選擇工具呢,無論你用沒有用戶Eclipse,在這裏,你將要用PyCharm進行自動化測試框架的開發。
這裏宏哥就不廢話也不囉嗦了,能夠參考宏哥這篇文章:手把手的教你安裝PyCharm --Pycharm安裝詳細教程(一)(很是詳細,很是實用)裏邊有詳細的安裝步驟。
如何建立一個包,或者文件夾,或者python文件,請看下圖:
如何設置工做面板中的字體:
點擊File-Settings,調出設置面板:
如何設置代碼面板中背景顏色成綠豆色,聽說綠豆色養眼,護眼,綠豆色用RGB表示:C7EDCC
在PyCharm如何多行註釋: 選中多行代碼,ctrl+/
在PyCharm如何運行代碼:點擊菜單欄綠色三角 或者,在代碼面板,右鍵,選中Run xxx
好了這裏就簡單的介紹一下,本身慢慢的用着用着熟練就行了。用一時一時爽,一直用一直爽!!!
前邊小章節介紹了PyCharm的基本使用,接下來咱們的腳本代碼都在這個PyCharm這個編輯器裏寫。好處有不少,項目文件結構層次清晰,寫代碼的時候會自動化提示和補全。這裏,咱們在昨天建立的項目下,新建一個包,而後在包下面新建一個demo.py文
件。抄寫如下代碼到你的環境裏,嘗試運行下,看看有沒有問題。
關於Python中類和函數及方法的調用,咱們寫在這個demo.py文件,具體代碼以下:
# 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() # 類調用類方法
運行代碼後,控制檯打印以下圖的結果
備註:
先運行下代碼是否會報錯,而後嘗試本身去理解下。主要有如下幾點內容
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的模塊下。
本小章節的學習目的,就是會用函數或者類來編寫咱們以前寫過的腳本。那麼接下來就和宏哥來體驗一下吧。
這裏宏哥如下用百度搜索舉例,模仿上面用類調用實例的方法來寫這個腳本,可能看起來比較囉嗦,可是代碼多了,你就會體會到類的做用,注意這裏self指的是當前BaiduSearch這個類自己:
# 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()
運行代碼後,控制檯打印以下圖的結果
好了,今天的分享就到這裏吧!!!謝謝各位的耐心閱讀。
您的確定就是我進步的動力。若是你感受還不錯,就請鼓勵一下吧!記得點波 推薦 不要忘記哦!!!
原文出處:https://www.cnblogs.com/du-hong/p/12016099.html