Appium培训文档

  1. Appium环境搭建
    (1)安装Python+Pycharm编辑器
    (2)安装Appium python client包
    直接在命令提示窗口中 输入pip install Appium-Python- Client
    常见问题:SSL代理错误,取消internet链接-局域网设置-代理服务器 勾选
    注:为防止后期bat批处理运行时相关三方包获取失败问题,建议使用pip命令安装框架中需要的第三方库,不要使用pycharm安装
    (3)安装Appium Server
    (4)安装Android SDK及配置环境变量
    配置环境变量的目的,是为分别调用三个路径下的工具做准备
    adb.exe驱动调试命令工具
    uiautomatorviewer.bat元素定位工具:目的在于对APP截图获取元素定位
    aapt.exe应用分析工具:目的在于获取app包名和appActivity窗体
    (5)安装JDK并配置环境变量

  2. 数据准备工作
    (1)开启appium客户端,设置日志路径,启动服务
    (2)启动pythoncharm,导入appium模块
    (3)收集app操作相关信息
    platformName:这里是android的apkdeviceName:手机设备名称,通过adb devices查看platformVersion:android系统的版本号appPackage:apk包名appActivity:apk的launcherActivity
    (4)usb链接手机,使用adb调试命令查看设备连接并启用开发者调试模式
    (5)手机设置准备:打开调试开关,USB调试,USB调试(安全设置),关闭MIUI优化并重启
    注1:USB调试(安全设置):MIUI系统会定期检测sim卡是否存在,若不存在sim卡,则自动关闭,造成调用失败
    注2:关闭MIUI优化作用:此项主要影响apk安装,oppo无此问题,需根据手机品牌分别设置,如设置后仍无法安装

  3. Pycharm启动App

def buge_driver(phonename):
    with open('../Config/buge_caps.yaml','r',encoding='utf-8') as file:
        data=yaml.load(file,Loader=yaml.FullLoader)
    # 需安装app时,增加如下代码
    # base_dir = os.path.dirname(os.path.dirname(__file__))
    # app_path = os.path.join(base_dir, 'app', data[phonename]['app'])
    # 'app': app_path,      #添加到buge_caps中
    buge_caps = {'platformName': data[phonename]['platformName'],
                 'platformVersion': data[phonename]['platformVersion'],
                 'deviceName': data[phonename]['deviceName'],
                 'appPackage': data[phonename]['appPackage'],
                 'appActivity': data[phonename]['appActivity'],
                 'noReset': data[phonename]['noReset']}
    logging.info("程序启动...")
    driver1 = webdriver.Remote(data[phonename]['url'],buge_caps)
    return driver1

if __name__ == '__main__':
    dri=buge_driver('mi9Se')

运行若出现异常,请排查代码报错及步骤2的数据准备工作,若均无问题,请参考如下解决办法在这里插入图片描述

  1. App元素定位方法
    (1)定位工具:采用appium进行定位
    在这里插入图片描述
    (2)定位元素示例
    在这里插入图片描述
    1> id定位,适用于resource-id为唯一标识时: 使用ID方法定位
    在这里插入图片描述
    2> text定位,适用于text唯一时使用:使用name方法定位,二种均可
    在这里插入图片描述
    3> desc定位,适用于content-desc唯一标识:使用content-desc方法定位
    在这里插入图片描述
    在这里插入图片描述
    4> 对于resource-id/text/content-desc等均无法定位元素唯一性时,使用相对坐标系定位,但该方法会直接进行 点击操作
def get_tap(self,x1,y1):
    # 函数作用: 相对坐标定位点击操作
    # tap三个参数,分别是  x,y,z: x,y 用于确定坐标位置,z表示点击持续时间
    x = self.driver.get_window_size()['width']
    y = self.driver.get_window_size()['height']
    #获取当前手机指定元素坐标系位置:xx,yy
    xx=x1/1080   #1080:当前手机width
    yy=y1/2211   #2211:当前手机height
    #返回相对坐标,并进行点击 
    return self.driver.tap([(xx*x, yy*y)],2)

5> 针对当前页面某元素类型的ID或Name存在多个的情况,但不希望使用tap定位的情况,建议使用find_elements方法定位

  1. App元素操作方法
    (1)点击操作
    在这里插入图片描述
    (2)坐标点击操作
    在这里插入图片描述
    (3)输入操作
    在这里插入图片描述
    (4)滑动操作
    在这里插入图片描述
    def swipeLeft(self):
        # 函数作用:模拟屏幕滑动操作-->开始起始坐标(x,y),结束坐标(x.y),滑动持续时间t
        logging.info('swipeLeft')
        l = self.get_size()
        x1 = int(l[0] * 0.9)
        y1 = int(l[1] * 0.5)
        x2 = int(l[0] * 0.1)
        time.sleep(3)
        self.swipe(x1, y1, x2, y1,500)
        # self.swipe(500, 188, 500, 2138,200)
  1. App元素等待方法
    (1) 强制等待
    使用场景:针对页面广告等有强制等待倒计时的页面
time.sleep(3)  #强制等待3秒

(2) 隐式等待
使用场景:针对页面跳转时,等待页面完全加载

driver1.implicitly_wait(8)  #等待8秒,非强制等待,待页面元素加载完毕即结束等待,进行下一步操作

(3) 显示等待
针对页面内出现的不定时长画面遮挡而导致指定元素需要操作时,预置此条件以便继续操作,
如房间出现动态礼物或坐骑特效遮挡时

#等待指定元素出现,结束等待,进行下一步操作
WebDriverWait(self.driver, 20, 0.5).until(EC.presence_of_element_located((By.ID, "com.chinaesport.bugegaming:id/tv_confirm")),message="未找到元素:确定退出")
  1. Appium框架说明及操作演示:
  2. App测试概述:
    (1) 概述
    什么是App自动化?为什么要做App自动化?
    App自动化是指给 Android或iOS上的软件应用程序做的自动化测试。
    手工测试和自动化测试的对比如下:
    手工测试优势:不可替代、发现更多bug、包含了人的想象力与理解力。注意,不是所有功能都需要自动化。
    自动化测试优势:可重复、效率高,增加软件信任度。
    App测试自动化的目的如下:
    执行自动化测试只会发现很少的bug。
    执行自动化冒烟测试或回归测试是用来验证系统状态,而不是找出更多bug。
    -执行自动化测试可以让测试同事有更多的精力来关注复杂场景,做更多更深层次的测试。
    -编写自动化测试过程中会发现一部分bug,发现后要及时记录。
    (2) 风险分析
    自动化测试的主要风险分析如下:
    1>测试用例覆盖率(覆盖率决定测试效率,选择合适用例,应约占功能用例集的20%~50%)
    2>测试结果准确度(准确度决定了测试有效性,应尽可能减少误报)。
    3>自动化代码维护(维护决定了成本,数据关键字驱动自动化框架,代码应尽可能优化和少改动)。
    4>版本开发和测试时间进度(当项目需求和功能较为稳定时,建议用自动化)。
    5>开发对控件元素增修改的程度(需开发人员尽可能地用统一的类型元素,并且和UI设计一致,修改变动程度不大,测试人员可根据提供的元素提前介入,开发自动化脚本)。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值