一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 基于python+selenium的二次封裝的實現

基于python+selenium的二次封裝的實現

2020-05-08 09:19何鳳祥在努力中 Python

這篇文章主要介紹了基于python+selenium的二次封裝的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

這是個人對selenium.webdriver寫的一些常用操作的二次封裝,也就相當于重寫了,不再使用自帶的框架,用自己寫的框架完成。這樣的話使代碼更簡潔,用自己的思想完成代碼的編寫。

基于python+selenium的二次封裝的實現

首先在根目錄下創建子目錄名為Common作為公用數據,名字隨自己取,在Common目錄下創建basepage.py和dir_config文件。(關于這兩個py文件要用來做什么,后面有說到)

首先我們打開dir_config文件

基于python+selenium的二次封裝的實現

看名字就可以很清楚的看到這是要干什么。
logs_dir = os.path.join(base_dir,“OutPuts/logs”)
(至于為什么要這么寫,我不做介紹了,這篇文章是針對于有基礎來講的)
用這一行來講,就是日志存放的目錄=我箭頭指向的目錄,每個都一樣。
先把所需要存放的目錄路徑配置好,根據自己所需來配。

接下來我們來到basepage文件下

基于python+selenium的二次封裝的實現

先把所需要的模塊、包導入好,至于我們為什么要用到這些模塊,后面就曉得了,嘻嘻嘻

基于python+selenium的二次封裝的實現

創建一個類名為 BasePage
寫一個初始化函數加上driver形參。self.driver = driver

基于python+selenium的二次封裝的實現

基于python+selenium的二次封裝的實現

這是等待元素操作的重寫,就是WebdriverWait().until(expected_conditions.visibility_of_element_located())的重寫
我后面還加了一個doc這個參數,上面我寫了注釋就是模塊名_頁面名稱_操作名稱,這樣的話 如果報錯的話 我可以在日志、截圖、報告很清楚的看到是哪個模塊,哪個頁面,哪個操作出錯了。還有其他的參數我都帶了注釋、以及每一行代碼我都帶了注釋,我就不一一講了。

基于python+selenium的二次封裝的實現

這是查找元素的重寫
為什么要寫一個查找的元素,請看下方

基于python+selenium的二次封裝的實現

這是點擊操作的重寫,我直接調用了查找,這個函數就是找到元素并點擊。一遍而過。

比如send_keys()等等

基于python+selenium的二次封裝的實現

并且在每次操作之前都加了日志
如logging.info(f"{doc}:元素:{locator}輸入內容:{text}")
他這里如果是正確獲取的話,日志會顯示在哪個模塊哪個元素中輸入什么內容,寫的一清二楚,如果錯了,相反我也打了錯誤的日志。(doc就是哪個模塊哪個頁面哪個操作下)
還有很多其他的操作,都是一樣的套路,如果覺得我這個重寫寫的不錯的可以按照我的套路去寫其他的操作

基于python+selenium的二次封裝的實現

獲取元素內容操作等等,我就不一一截圖了
比如哪里出錯了,會在指定的路徑下存在報錯日志,截圖等等

基于python+selenium的二次封裝的實現

而且每個錯誤都會帶上doc方便自己排查錯誤。

好了,我們來實操,用下這個框架
首先創建一個登陸頁面的py文件LoginPage

基于python+selenium的二次封裝的實現

導入BasePage并創建一個類來繼承BasePage
from PageLocators.LoginLocators.login_locators import LoginLocators as loc
這個模塊是我存放login頁面的定位元素

基于python+selenium的二次封裝的實現

基于python+selenium的二次封裝的實現

由于我們在BasePage寫了初始化函數,所以這里不需要寫了
然后我們定義一個login的函數帶上username,password參數,這是代表輸入用戶名和密碼的形參
再定義一個doc
直接用我們剛才重寫的二次封裝來用
首先我們是要找到用戶名輸入框這個元素,在這個元素中輸入我們的用戶名
就可以直接用input_text()
self.input_text(loc.name_text,username,doc)
loc.name_text就是我們所定義的用戶名輸入框的定位表達式以及定位元素,我用元祖的形式括起來的。看上面的圖片
后面username就是用戶名的形參,等你測試用例調用登陸頁面操作的時候再傳用戶名數據就好了,我每一個都帶了doc,所以doc必傳。
所有的操作都是一樣的,理解一個就可以理解全部了。
樓主考慮到為什么元組的形式也可以傳進去,這里我給個特寫。

基于python+selenium的二次封裝的實現

看我在locator前面加了這個符號,這個符號是解包的意思
self.driver.find_element(By.XPATH, ‘//*[contains(@name,“username”)]')
實際上就是這個意思。
然后我傳個元祖直接引用就OK了

好了,然后我們再用pytest單元測試框架寫測試用例,然后引用LoginPage

基于python+selenium的二次封裝的實現

這紅框內就是username和password的實參啦,我這是調用登陸的測試數據。這么理解就好了。
好了,這篇文章介紹完了。是不是很簡潔、很實用、也方便后續修改,實際上就是為操作頁面用自己的思想做了優化。
如果你覺得還不錯的話 也可以按照我寫的這種去修改,當然有自己的想法也更好。
然后這邊我還放了pytest的一些內容,有些小伙伴沒看懂的先不要管,后續我會單獨寫一篇關于pytest單元測試框架的使用。
當然有不懂的可以留言,想進群一起學習的可以私聊我
一起加油呀—呼呼呼!!!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/weixin_44954642/article/details/103841345

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品一线二线三线 | 亚洲热在线观看 | 色综合久久六月婷婷中文字幕 | 国产老妇| 色婷婷综合缴情综六月 | 人人爱天天做夜夜爽88 | 无限时间看片在线观看 | 国产成人福利美女观看视频 | 好舒服好爽再快点视频 | aaa毛片视频免费观看 | 女同69式互添在线观看免费 | 色综合合久久天天综合绕视看 | 91九色视频无限观看免费 | 天美麻豆| 高清一区高清二区视频 | 王淑兰李思雨李铁柱乡村小说免费 | 色综合合久久天天综合绕视看 | 9l桃色| 九九大香尹人视频免费 | 激情自拍网 | 欧美另类亚洲 | 洗濯屋动漫在线观看 | 手机看片国产免费现在观看 | 日本男男gaygays | 国产成人精品一区二区阿娇陈冠希 | 99只有精品 | 亚洲欧美7777| 国产高清自拍 | 亚洲精品91香蕉综合区 | 非洲黑人gay巨大 | 9久re在线观看视频精品 | 狠狠色综合久久婷婷色天使 | 亚洲精品在线播放 | 天天干天天色综合网 | 精品一区二区三区高清免费观看 | 日本不卡在线视频高清免费 | 免费看a片毛片 | 大陆男同志gayxxx | 免费在线公开视频 | 高h肉爽文农民工 | 91影视永久福利免费观看 |