接到一個任務,就是做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()