uiautomator2 怎么做app UI自動化


相對於appium操作appium 來做ui自動化時 uiautomator2要簡潔多。

例如做app的登錄相關user

 

先寫好用例:

 

 

 然后在setup那里把啟動app 寫成初始化 然后封裝user的點擊輸入點擊下一步操作為公共方法:

 

import uiautomator2 as u2
import unittest
import time
import os
import xlrd
import json
from lib import HTMLTestRunner
file_path = os.path.normpath(os.path.join(os.path.dirname(os.path.dirname(__file__)), "testcase"))
file1 = file_path+'/Mycase.xlsx'#取相對路徑 二者選其一就行
book = xlrd.open_workbook(file1) # 打開excel文件
sheet = book.sheet_by_index(0) # 通過索引打開第一個表
nrows = sheet.nrows # 獲取所有行數


class Mycase(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.d= u2.connect()
cls.sess=cls.d.session('com.pay.payments') # 第三種啟動app的方式
time.sleep(1)
cls.d.xpath('//android.widget.ImageButton').click()
cls.d(resourceId="com.pay.payments:id/txt_register").click()
time.sleep(1)
cls.d.press("back")

def user(self,username):
self.d(resourceId="com.pay.payments:id/edt_email_mobile").click()
self.d.send_keys(username)
self.d(resourceId="com.pay.payments:id/image_submit").click()

def test_user_null(self):
"""
檢查用戶為空直接點擊下一步
:return:
"""
nrow_value = sheet.row_values(1)
self.user(nrow_value[2])
#獲取到app提示信息
message = self.sess.toast.get_message()
print message
time.sleep(1)
#校驗期望結果是否等於message
assert (nrow_value[3] == message)

def test_user_short(self):
"""
檢查用戶名稱太短
例如直接輸入個a
:return:
"""
nrow_value = sheet.row_values(2)
self.user(json.loads(nrow_value[2]))
# 獲取到app提示信息
message = self.sess.toast.get_message()
print message
time.sleep(1)
#校驗期望結果是否等於message
assert (nrow_value[3] == message)


存在幾個重點:
(1)setUpClass是為了不讓每次執行用例都啟動一次app 故寫成初始化 用setUpClass 加上@classmethod

(2)封裝點擊user輸入框、輸入值、點擊下一步為公共函數 減少代碼冗余:

(3)難點是U2 獲取app頁面的toast 本人親測發現一種自帶方法:

message = self.sess.toast.get_message()
print message
可以直接把toast打印出來,進而我們來校驗表格的期望結果跟 實際出現的message 來對比 用例校驗完成

(4)操作excel表格
file1 = file_path+'/Mycase.xlsx'#取相對路徑 二者選其一就行
book = xlrd.open_workbook(file1) # 打開excel文件
sheet = book.sheet_by_index(0) # 通過索引打開第一個表
nrows = sheet.nrows # 獲取所有行數
file_path可以用相對路徑來代替就是 os里面那個,這些都完成之后,我們就是利用unittest框架來執行全部用例,生成測試報告,和發送email

thats all 喜歡app 自動化的同學趕緊去操作一波吧



免責聲明!

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



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