UI自動化,手機驗證碼處理方式。


接到一個任務,就是做app的UI自動化,而首先我們需要進行對app的功能測試用例進行梳理,得到一個需進行自動化測試的用例集

 

1.登錄場景的用例

 

(1)通過手機號進行獲取驗證碼登錄

(2)qq登錄

(3)微信登錄

 

后面的2和3 都畢竟簡單,在qq和微信都在線時,點擊圖標進行登錄即可。主要是1,因為沒有辦法拿到驗證碼。

 

方式(1)一開始,是將sim插入測試手機,通過驗證碼的復制粘貼方式來進行send_keys,但是發現app存在個bug,就是不能進行復制粘貼,頓時心里涼涼,

 

方式(2)后面通過打開短信app,拿到驗證碼,通過get_text的方式獲取驗證碼(或者通過正則表達式來取驗證碼),是可以拿到驗證碼的。此時又發現一個問題,home回到主頁面,app登錄時重置了狀態,再次打開時不是輸入驗證碼的頁面了,頁面重置了。此路不通

 

 

 

方式(3)根據驗證碼的存儲路徑

通過鏈接數據庫的方式來查詢到此次下發的驗證碼,來進行send_keys,但是又由於發送服務不在本業務進行維護,無法鏈接別人業務的數據庫,存在較大風險,因此也涼涼

 

方式(4)通過接口查詢驗證碼

 

接口進行get請求拿到驗證碼的json返回值,通過json.loads來取值,取到要用的驗證碼code,因為驗證碼輸入框不能直接進行send_keys,只能通過點擊鍵盤的數字來進行輸入。所以通過先將每個鍵位置確認好來組成一個數組來進行取值


但是因為驗證碼會存在0 所以在數組最后一位加上0的坐標。問題解決

但是后面仔細考慮可以通過參數化text的方式來實現
下面一行是 等待某個text出現進行點擊,最多等待10s
self.d(text="刪除").click()
我們只需要復制四行,參數text的方式來進行參數傳參就可以解決。傳什么數字就點哪個位置。此方法比較好。可以暫定為方式5吧。


驗證碼解決了就可以繼續下面操作了。

下面列幾個比較好的方法:

1.等待某個text出現進行點擊
self.d(text="刪除").click() 

2.拖動指定對象,到x,y 坐標
d(text="136****7022").drag_to(x=0.034, y=0.247, duration=0.5)  
3.獲取頁面taost
sess = cls.d.session('包名')
message = self.sess.toast.get_message()



 


免責聲明!

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



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