宿松網(wǎng)站建設青島關鍵詞排名哪家好
?
?
😏作者簡介:博主是一位測試管理者,同時也是一名對外企業(yè)兼職講師。
📡主頁地址:【Austin_zhai】
🙆目的與景愿:旨在于能幫助更多的測試行業(yè)人員提升軟硬技能,分享行業(yè)相關最新信息。
💎聲明:博主日常工作較為繁忙,文章會不定期更新,各類行業(yè)或職場問題歡迎大家私信,有空必回。

?
?
閱讀目錄
- 1. 目的
- 2. 管理方法
- 3. 配置方法
- 4. 方法實現(xiàn)
- 5. 使用注意點
1. 目的
??web自動化測試作為軟件自動化測試領域中繞不過去的一個“香餑餑”,通常都會作為廣大測試從業(yè)者的首選學習對象,相較于C/S架構的自動化來說,B/S有著其無法忽視的諸多優(yōu)勢,從行業(yè)發(fā)展趨、研發(fā)模式特點、測試工具支持,其整體的完整生態(tài)已經(jīng)遠遠超過了C/S架構方面的測試價值。
??接下來我們在上一次的基礎之上,對已經(jīng)初具雛形的自動化代碼進行補充和優(yōu)化,利用python的特性來對定位元素的管理方法進行設計并講解其中的思路與注意點。
?
?
2. 管理方法
??一般來說,界面元素的信息管理方法比較常見的有配置文件、持久化、專項平臺和工具等。如何取舍大家也是眾說紛紜,但既然我們使用了python這門語言,那么就要好好利用其優(yōu)勢,將管理的成本(人力、耗時等)降到最低。相較于一般文本,我們可以使用ini格式的配置文件來對已知曉具體信息的元素進行統(tǒng)一的管理,將業(yè)務代碼與界面元素進行有效分離,減少后期因需求變動而發(fā)生的大量維護工作。
??通過以上所說的方法,我們可以將大部分常用的元素信息錄入進配置文件,即使后期產(chǎn)品或項目發(fā)生了變更,我們也可以靈活應對。舉個例子,如果產(chǎn)品或項目發(fā)生了邏輯與功能的變更,那么我們只修改業(yè)務代碼即可;若是發(fā)生了UI變更,我們也只需要修改對應的配置文件。這樣的低耦合自動化框架才可以有效的提升日常的測試團隊工作效率。
??另外,鑒于大部分團隊內(nèi)會有多名測開角色的存在,在定義配置文件之初,也應該有效的開展團隊內(nèi)的討論,將配置文件的一些總要因素(編寫與命名規(guī)范、存放路徑等)進行充分的認知統(tǒng)一與整合。以防在后期使用時出現(xiàn)元素名不同而無法找到等等諸如此類的低級錯誤。
?
?
3. 配置方法
??接下來我們先來看下一般的配置文件內(nèi)都需要寫哪些內(nèi)容,下圖展示的是登錄頁面的相關元素定位信息,這里還是給大家說一下,如果系統(tǒng)的規(guī)模不是太大的話建議還是把所有的元素信息放在一個配置文件內(nèi)進行管理,不宜進行多路徑多文件的分散處理。
??文件的格式基本就是ini的配置格式,內(nèi)容由多個section構成(方括號內(nèi)),每個section內(nèi)可以存在多個配置項,每一條配置項由配置項名稱、定位方法、定位值組成。配置項名稱不用多解釋,在代碼中會直接使用到,可以簡單的理解為類似變量名,后面的id則是定位方法,這里不拘泥于id,如果要使用其他的定位方式,改成對應的方法即可,具體的定位方法可以參看前一篇中的get_element方法。當中的冒號則只是方便后期在業(yè)務代碼中進行取值的分割,不強制使用冒號,其他符號均可。最后的是定位值,也就是開發(fā)同學在開發(fā)界面中各類元素的對應屬性的屬性值,這里要注意的是,值必須和你前面指定的方法相對應,千萬不能搞錯。
?
這里舉個簡單的例子,比如LoginPageElement類中有一個get_element的方法,那我們將原有的業(yè)務代碼內(nèi)元素轉(zhuǎn)化為配置文件的方法為:
log_pg_ele = LoginPageElement('chrome')
log_pg_ele.get_element('id', 'transaction_log_treaty')
?
??是不是很簡單,因為在原有的get_element方法內(nèi),我們已經(jīng)定義了相關的定位方法與定位值這兩個參數(shù),所以根據(jù)配置文件的配置項組成方式可以進行無縫轉(zhuǎn)換,無須再進行額外的操作。
?
?
4. 方法實現(xiàn)
??有了對應的配置文件,我們就可以使用python來設計實現(xiàn)相關的配置解析與元素調(diào)用方法。這里我們先將對應的ini文件創(chuàng)建在各自項目指定的目錄中,再啰嗦一次,如果是團隊公用,文件名與存放路徑需要統(tǒng)一。
??假設我的配置文件名為FundManSys.ini,存放在項目的conf文件夾下。我們在使用python解析配置文件之前,需要先安裝對應的功能模塊。這里我們使用configparser這個庫,它可以讀取解析我們一般的ini類配置文件。
??無論是python interpreter亦或是pip install都可以,安裝完成之后我們開始進行整體的功能設計與實現(xiàn)。
??首先,我們先將讀取配置文件的功能進行實現(xiàn)。這里我創(chuàng)建了一個類,但沒有寫出來,我們直接展示其內(nèi)的方法,名字什么的大家可以自由發(fā)揮, 構造函數(shù)中將需要指定的節(jié)點名稱帶入,如果不指定名稱,則帶入特定值。第二段代碼通過調(diào)用方法ConfigParser來讀取解析配置文件,read()內(nèi)填寫配置文件的路徑與文件名,這里設置了變量,最后將整個對象返回出來。
def __init__(self, section=None):if section:self.section = sectionelse:self.section = 'business_log_v2'def load_ini(self):cf = configparser.ConfigParser()cf.read(ini_file)return cf
?
??那么取得對象之后我們?nèi)绾握{(diào)用里面的信息呢,接下來就需要對其內(nèi)進行進一步的處理實現(xiàn)。這里使用了鏈式寫法,不這么寫的話也可以在構造函數(shù)中的定義一個變量來接收load_ini方法中返回的對象。section和key兩個參數(shù)也不用多說了吧,分別對應的已經(jīng)很明顯了。
def get_data(self, key):data = self.load_ini().get(self.section, key)return data
?
??基本的配置文件解析功能就設計封裝好了,是不是很簡單?那么我們拿到想要數(shù)據(jù)之后如何實際結合至現(xiàn)有的元素操作代碼中去呢,緊接著我們就可以開始將業(yè)務代碼與實際配置功能進行對接了。
??我們把之前設計的get_element方法進行優(yōu)化,添加取得數(shù)據(jù)并處理的操作。
這里實例化的load_ini因為沒有指定節(jié)點名,就會默認使用business_log_v2
節(jié)點名。這里已經(jīng)將原來的方法參數(shù)進行變更,可以看到變更后的參數(shù)變少了,原有的by與ele兩個參數(shù)也被配置項中的定位方法與定位值所替代,這也就是我們要達到的目的。具體變化大家可以對比前一篇中的get_element方法。
def get_element(self, key):element = Noneload_ini = EleConfiguration()data = load_ini.get_data(key)by, ele = data.split(':')try:if by == 'id':element = self.driver.find_element(By.ID, ele)elif by == 'name':element = self.driver.find_element(By.NAME, ele)elif by == 'css':element = self.driver.find_element(By.CSS_SELECTOR, ele)elif by == 'class':element = self.driver.find_element(By.CLASS_NAME, ele)else:element = self.driver.find_element(By.XPATH, ele)except:session.add(ele_err_msg)session.commit()return element
?
??至此我們的整體配置管理設計已經(jīng)完成,真實的使用過程中我們只需要根據(jù)自己的實際場景進行頁面業(yè)務邏輯的代碼編寫即可,無論是何種界面業(yè)務操作都可以直接實例化并調(diào)用get_element方法來進行元素定位了,并且由于真實元素信息與業(yè)務代碼分開的關系,整體的可讀性與維護性也是大大提升。
?
?
5. 使用注意點
1.python2與3的版本內(nèi)configparser模塊的名字不同,有大小寫之分,需要注意,2是ConfigParser,3是configparser;
2.配置項內(nèi)的鍵值對如果連接符號使用冒號,注意中英文狀態(tài),以免出現(xiàn)使用中文冒號而意外報錯的情況出現(xiàn);
3.配置文件中不要設置過多的section名,過多的名稱容易讓配置文件的內(nèi)容過于混亂,不予與維護;
4.與其說注意更不如說是規(guī)范,配置文件內(nèi)的各類名稱盡量都使用英文來定義,和編寫代碼的命名意義差不多,拼音不應該出現(xiàn)在此類的配置文件內(nèi)。