自动化测试-app

一、基本说明

1. 主流的工具:

Robotium:

  • 一款国外开源的Android自动化测试框架
  • 适用平台:Android
  • 支持语言:Java
  • 不支持跨应用

Appium:

  • 一款国外开源的自动化测试工具
  • 适用平台:Android、IOS
  • 支持语言: Java、Javascript、PHP、Python、C#、Ruby等主流语言
  • 支持跨应用
  • 社区活跃、资料丰富

macaca:

  • 由阿里巴巴公司开源的一套自动化解决方案
  • 适用平台:PC端、Android、IOS
  • 支持语言:Java、Python、Node.js
  • 支持跨应用

2. app自动化执行原理:

3. app类型

Native app:原生应用,使用Android或者ios的标准SDK编写的应用;

Web app:移动浏览器应用,使用移动平台的浏览器访问的应用

Hybrid app:混合应用,把一个基于webview实现的功能进行包装的应用

二、环境搭建

所需环境:

jdk/ android-sdk / appium /模拟器

1. jdk安装

为什么要安装jdk? 安卓应用或开发工具是使用java语言开发的,必须使用jdk

2. android-sdk

安卓开发工具包

1)解压到指定目录

2)将目录添加到path中

新建环境变量: ANDROID_HOME = D:\Android\sdk (安装目录)

添加path路径,在path中添加:%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;

提示: tools有查看元素工具,platform-tools 是adb命令工具所在目录。

3. appium安装

说明:需要安装appium服务端程序和python中调用的api库

  • 服务端:

将脚本发送给手机

安装程序appium-desktop-setup-1.8.0.exe

  • python的appium.api库

作用: 自动化测试使用api

安装: pip install Appium-Python-Client==1.2.0

4. 模拟器

雷电/mumu/夜神

三、adb工具

通过电脑,操作android系统的工具

adb工作原理:ADB全名Android Debug Bridge,是一个手机调试工具

adb命令

1. 获取包名和启动名

mac/linux: adb shell dumpsys window | grep usedApp

windows: adb shell dumpsys window | findstr usedApp

2.上传和下载命令

上传: adb push 路径\xxx.txt /sdcard

下载: adb pull /sdcard/xxx.txt 本地文件夹路径

3. 启动时间

adb shell am start -W 包名/启动名

查看时间:一般要冷启动

冷启动:应用程序未启动

热启动:应用程序已启动在后台或当前页面

问题:启动的时候有时会提示Security exception: Permission Denial

解决办法:

使用命令: adb shell dumpsys package 包名

找到包含“category.LAUNCHER” 字样的Activity

4. 查看日志

adb logcat > d:\xxx.log

提示:对app操作时,要开启日志,记录app操作的步骤和异常。

adb connect ip:端口 正常不需要手动连接,系统会自动连接。 如果执行 adb devices 没有看到设备列表,需要手动连接。

四、appium 基本操作

前置条件: 启动appium服务,连接上手机

启动appium服务: 命令appium

华为鸿蒙手机注意事项:

华为手机,在“设置”中,找到关于“关于手机”,多次点击版本号,进入开发者模式。

然后在“设置”中,找到“开发人员选项”,打开“USB 调试”,如果有‘“仅充电”模式下允许ADB调试’,就打开,这样就不用设置usb传输模式,如果没有,就下来系统菜单找到“USB的设置”选项卡,点击进入设置传输文件模式即可

华为(鸿蒙系统)归于Android一类的,所以配置信息中,platformName是Android。

adb shell getprop ro.build.version.release 查看版本号

from appium import webdriver
from time import sleep
# 定义字典变量
desired_caps = {}
desired_caps["platformName"]="Android"
desired_caps["platformVersion"]="10"
desired_caps["deviceName"]="SXGBB21803208129"
desired_caps["appPackage"]="com.android.settings"
desired_caps["appActivity"]=".HWSettings"
# 设置中文
desired_caps["unicodeKeyboard"]=True
desired_caps["resetKeyboard"] = True
# 获取driver
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_caps)

sleep(3)
# 启动应用
driver.start_activity("com.yunzujia.tt","com.yunzujia.clouderwork.view.activity.main.SplashActivity")
# 获取当前应用包名
print("当前所在应用包名:",driver.current_package)
# 获取当前应用启动名
print("当前所在应用启动名:",driver.current_activity)
sleep(3)

driver.quit()

跳转应用: driver.start_activity(appPackage,appActivity)

获取包名:driver.current_package

获取界面名:driver.current_activity

关闭app:driver.close_app() 实际用这个没有用,用driver.terminate_app(xxx)

关闭驱动: driver.quit()

安装app: driver.install_app(app_path)

卸载app: driver.remove_app(app_id)

判断是否安装: driver.is_app_installed(app_id)

置于后台:backgroud_app(seconds)

五、元素定位

 查看元素定位信息

自动化测试就是查找元素操作元素,要查找元素,就需要根据元素的信息来查找(id\class\text)

如何查找: 使用android sdk 自带工具: uiautomatorviewer工具

如何使用?

1. 启动

2. 截屏查看

adb devices , 显示unauthorized 。

可以使用 adb kill-server, 之后再次启动 adb start-server

通过uiautomatorviewer 可以获取到元素信息

driver.find_element_by_id(resource-id属性值)

driver.find_element_by_class_name(class属性值)

driver.find_element_by_xpath(xpath表达式)

driver.find_element_by_accessibility_id(content-desc属性值)

当定位到多个符合条件的元素时,默认返回第一个

元素的操作: click() /send_keys() /clear()

获取信息:

获取文本: 元素.text

获取大小:元素.size

获取位置:元素.location

获取属性:元素.get_attribute("属性名"),属性名有 resourceId/name/className/text

滑动: swipe(start_x,start_y,end_x,end_y)

拖拽:drag_and_drop()

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值