自動化測試:學習Selenium+Python的過程中遇到的坑和解決方法

博為峰網校發表於2022-03-18

當純手工測試已經不能滿足專案的需要時,我們就引入了自動化測試,下面我來列舉一下我在學習Selenium+Python的過程中遇到的坑以及解決方法。 加我VX:atstudy-js 回覆“測試”,進入 自動化測試學習交流群~~

找不到測試用例No tests were found

大多數初學者可能從開始到結束寫一個操作流程,都能很流暢的寫下來,但是這種只適應於迴歸測試,用自動化指令碼進行整體功能的迴歸測試,不適應於對某個具體功能進行詳細測試,那麼這個時候就引入了UnitTest,對測試用例進行管理。

但對於初學者來說,從一個檔案分化到多個檔案,方法使用規則的不清晰等等,都可能導致測試失敗,這個問題就是在使用UnitTest管理用例的時候遇到的問題。

執行結果提示找不到測試用例。

我遇到這個問題的時候,試了很多方法,一開始以為是程式碼哪裡呼叫的不對,各種查,從網上也各種搜尋解決方法,說什麼的都有,但是嘗試之後都沒有得到解決。

然後我又對比了之前跟著學習影片練習的例子發現,在練習中我編寫測試用例的方法都是以test開頭,而我在實際應用中的用例並沒有以test開頭,就在想是不是這個影響的呢?

然後我就將所有的測試用例的方法都加上了test字首,一執行果然測試用例都執行了。那麼如果我們的用例不想以test開頭怎麼辦呢?

既然我們已經找到了問題所在,我們就可以針對具體問題來從網上查詢原因了。透過一步步進入方法檢視所得,我們找到了TestLoader函式。如下圖:

我們發現,這個方法裡定義的查詢測試用例的字首就是test。如果我們想用其他字首來定義方法,將這裡的字首改成ceshi,然後將所有的測試用例都加上ceshi字首,執行程式碼:

果然執行成功。

這裡給小夥伴們寫一下如何定位到這裡。

1)透過左側導航欄:

另一種方法就是找到方法裡呼叫查詢測試用例的方法。

將滑鼠放到這裡,然後點選Ctrl+B進入方法,進入到了如下方法:

再將滑鼠放到這裡,Ctrl+B進入具體方法:

頁面上下拉選項的值未載入出來

小編遇到這種問題的時候也是各種不解啊,當時測的是新增客戶的頁面,由於之前寫的程式碼都是每一條用例都會重新整理一下當前頁面,我想改成不重新整理當前頁面,每次只開啟新增頁面,就將頁面重新整理的操作放到了setUp方法中(人工填寫非複製)。

但是放過去之後,執行用例發現,頁面載入出來了,但是客戶性別的下拉框沒有資料,預設值也未顯示,網上查詢各種方法都不好使,嘗試未果後,我只能將現在程式碼與之前能跑通的版本的程式碼進行了對比,對比發現,url裡多了一個/。

之前能跑通的程式碼:

當前跑不通的程式碼:

我在修改獲取頁面的操作時,將網址寫錯了,就是多了一個斜線,導致了程式無法執行。

找到問題後,我手動在瀏覽器上錯誤的地址,然後新增,檢視頁面資訊,果然手動操作下拉框的值也未載入。

這個經驗告訴我們,請求的url一定要填寫正確,不能是自己以為的,也不能覺得多一個/少一個/無所謂。如果真是url寫錯導致用例執行失敗,真的很難定位問題。

定位不到元素

涉及到頁面切換的時候,往往就是元素定位問題存在最多的地方,我們以 為例:

百度首頁點選“更多”,跳轉到了新的頁面:

圖片

新頁面點選小度商城,跳轉到商城頁面,下面我們來寫一下程式碼:

driver = webdriver.Chrome()

driver.get(")

driver.find_element_by_link_text("更多").click()

driver.find_element_by_link_text("小度商城").click()

執行程式碼我們發現,並沒有成功定位到“小度商城”的連結:

換了多種元素定位方式都不行,依然定位不到。在網上各種搜尋解決方案也未找到解決方案。後來網上偶爾看到視窗切換的文章,就在想是不是因為彈出了新頁面的原因,導致程式未定位到當前跳轉的頁面,而是還在之前的頁面。有了想法之後,馬上修改了程式碼,如下:

driver = webdriver.Chrome()

driver.get(")

driver.find_element_by_link_text("更多").click()

#獲取所有的控制程式碼(瀏覽器所有的Tab頁)

hand=driver.window_handles

print(hand)

#頁面定位到最大的頁面(最後開啟的頁面)

driver.switch_to_window(hand[1])

driver.find_element_by_link_text("小度商城").click()

執行程式碼發現,執行成功了。

解決該問題的過程,讓我明白了,眼睛看到的不一定是真的,雖然我們肉眼看到頁面上顯示已經切換到最新的頁面,但是程式碼裡不一定是,如果遇到頁面跳轉的情況,我們還需要確定程式碼裡當前定位到的是哪個頁面,再進行對元素的定位。

以上三個問題,雖然都不是什麼大問題,但是如果方向找過了,容易一直繞在裡面找不到解決的辦法。這幾個問題是我在學習實踐的過程中遇到的花費時間較長的問題,希望對大家能有所幫助。

最後:

可以我的個人V:atstudy-js,可以免費領取一份10G軟體測試工程師面試寶典文件資料。以及相對應的影片學習教程免費分享!,其中包括了有基礎知識、Linux必備、Mysql資料庫、抓包工具、介面測試工具、測試進階-Python程式設計、Web自動化測試、APP自動化測試、介面自動化測試、測試高階持續整合、測試架構開發測試框架、效能測試等。

這些測試資料,對於做【軟體測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2872571/,如需轉載,請註明出處,否則將追究法律責任。

相關文章