首页 > 移动平台 > 详细

uiautomator2 怎么做app UI自动化

时间:2019-12-27 14:08:39      阅读:143      评论:0      收藏:0      [点我收藏+]

相对于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 自动化的同学赶紧去操作一波吧


uiautomator2 怎么做app UI自动化

原文:https://www.cnblogs.com/testling/p/12106849.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!