App自动化测试

App自动化测试

一、App环境搭建及App自动化测试原理

1、安装jdk,配置环境变量

1.系统变量—>新建JAVA_HOME变量,变量值填写jdk的安装目录 D:\JavaJdk\bin
在这里插入图片描述
在这里插入图片描述
2.系统变量—>寻找Path变量—>编辑,在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
在这里插入图片描述

3.系统变量—>新建CLASSPATH变量;变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
在这里插入图片描述

4.检验JDK是否配置成功 运行cmd 输入java -version,如果出现如下结果,则说明JDK环境变量配置成功

2、Android SDK环境安装

1.解压SDK并配置SDK的环境变量
(1)SDK的下载
下载版本选择:android-sdk_r24.4.1-windows.zip

(2)SDK的安装
进入D:\android-sdk-windows目录,双击SDK Manager.exe下载对应的包:
a.以下三个Android工具包必须安装:只需要下载最新的版本就行了。
Tools下:
1. Android SDK Tools
2. Android SDK Platform-tools
3. Android SDK Build-tools
b.Extras(附加设备)
1.Android Support Repostory
2.Google USB Driver
c.安卓版本:安装和模拟器的安装版本一致。现在android 5开发的场景多一些
1.SDK Platform
2.ARM EABI v7a System Image
3.Sources for Android SDK
(3)配置SDK的环境变量
1、新建:
变量名:ANDROID_HOME
变量值:D:\App\android-sdk_r24.4.1-windows\android-sdk-windows(SDK的实际安装路径)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  2、编辑PATH,在最后面添加:
    D:\App\android-sdk_r24.4.1-windows\android-sdk-windows\platform-tools
    (如果原来PATH路径最后不是;则加一个;在添加下面内容)
  3、严重是否安装并配置成功:
    在dos中输入adb验证。
3、Appium Server安装

解压文件,执行.exe文件,即可

4、模拟器的安装

1、载夜神模拟器,版本选择最新版
2、被测app的安装
把apk包直接拖拽到夜神模拟器中安装
3、设置模拟器/真机的环境
a.启用设备的开发者选项,启动调试功能。
夜神模拟器:设置—>多次点击版本号直到出现提示[开发者选择]—>返回上一步能看到
[开发者选择]—>USB调试。

b.输入命令前:因为SDK下adb[在SDK安装目录的platform-tools目录下]和模拟器的nox_adb
[在夜神安装目录的bin目录下]版本不一致,所以需要把SDK路径下的adb.exe复制到模拟器的bin
路径下,重命名为nox_adb.exe,原来的nox_adb.exe先备份。

5、安装appium-python-client python第三方库

pip install appium-python-client

二、App自动化测试原理

如何通过代码操作不同操作系统(ios/Android)不同版本的手机终端

[自动化脚本] —发送指令—> [Appium Server] —转发指令—> [Android SDK环境(软件工具包/框架)] —操作手机终端—> [被测手机终端(模拟器/真机)]

三、Desired Capabilities-Appium自动化配置项

设置参数:
操作系统 platformName
版本 platformVersion
设备名称 devicName
包名 appPackge
入口启动页面 appActivity

四、常用ADB命令

1、连接模拟器
adb connect 127.0.0.1:62001
其他模拟器:雷神5555 夜神62001 mumu7555
2、查看连接的设备
adb devices
3、查看被测app的包名及入口启动页面
aapt dump badging apk的路径
package: name=‘xxxxxxx’ 包名
launchable-activity:name=‘xxxxx’ 启动页面

获取对应的包名和页面名
Mac/Linux: adb shell dumpsys window | grep mCurrentFocus
Window: adb shell dumpsys window | findstr mCurrentFocus

D:\App\android-sdk_r24.4.1-windows\android-sdk-windows\build-tools\29.0.3>adb shell dumpsys window | findstr mCurrentFocus
mCurrentFocus=Window{4fafd7e u0 com.android.launcher3/com.android.launcher3.launcher3.Launcher}

com.android.launcher3 包名
com.android.launcher3.launcher3.Launcher 页面名

ADB调试工具
adb shell 查看手机文件
1、上传文件/下载文件
adb push 电脑的文件路径 手机的文件夹路径
adb push C:\Users\xiaoyang\Desktop\1.txt /data/

adb pull 手机的文件路径 电脑的文件夹路径
adb pull /data/1.txt C:\Users\xiaoyang\Desktop\

2、常用命令 app启动时间
在这里插入图片描述
3、adb获取手机日志
在这里插入图片描述
4、adb其他指令
在这里插入图片描述

五、python代码实现操作手机终端某个程序自动化测试

六、Appium日志的查看

python 自动化脚本如何操作手机终端过程:
1、自动化脚本发送http请求,请求参数:终端设备参数
2、创建会话
3、确认终端设备是否连接 并且确认安卓版本 确认设备参数是否与终端的设备是否一致
4、appium会推送一个包 AppiumBootstrap.jar 模拟器上 api包:appium server指令进行接收,操控手机端
5、相应http请求
6、下一http请求…

七、Appium元素定位工具(UIAutomatorView/Appium Desktop Inspector/weditor)

1.1 UIAutomatorView

Android SDK 自带的定位工具
位置:Android SDK/tools/uiautomatorviewer.bat
元素常见几个属性:
text
resoureid
class 元素标签
content-desc: 元素功能描述 语音播报
定位单个元素
driver.find_element(By.ID,resoureid)
driver.find_element(By.CLASS_NAME,class)
driver.find_element(By.XPATH,xpath)
driver.find_element_by_accessibility_id(content-desc)

1.2 Appium Desktop Inspector

appium server自带的定位工具

1.3 Weditor

Uiautomator2 python第三方库 appUi自动化测试框架
安装:
命令01: pip install Uiautomator2
命令02: python -m uiautomator2 init # 推送包到模拟器
命令03: pip install weditor
若 pip 下载的慢,可使用国内源:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple weditor
确认安装: weditor --help

Appium-基础Api

一、app基础操作

1、应用跳转

driver.start_activity(appPackage,appActivity)

appPackage:要打开的程序的包名
appActivity:要打开的程序的界面名

2、获取包名和界面名

获取包名
driver.current_package
获取界面名
driver.current_activity

3、关闭驱动和app

关闭当前操作的app,不会关闭驱动对象
driver.close_app()

关闭驱动
driver.quit()

4、安装和卸载以及是否安装app

安装app,app_path为安装文件完整路径名
driver.install_app(app_path)

卸载app,app_id为app包名
driver.remove_app(app_id)

判断app是否安装,app_id为app包名
driver.is_app_installed(app_id)

5、置于后台
置于后台,seconds表示秒数
driver.background_app(seconds)

6、点击/输入/清空

点击
element.click()

输入
element.send_keys(‘内容’)

清空
element.clear()
如果send_keys 输入中文脚本报错,在设置设备参数中添加下面两条参数
desired_caps[‘unicodeKeyboard’] = True
desired_caps[‘resetKeyboard’] = True

7、获取元素信息-文本、位置和大小
element.text 文本
element.location 位置
element.size 大小

8、获取元素属性值

element.get_attribute(属性名)

获取resource-id ——> resourceId
获取content-desc ——> name
获取class ——> className
获取text ——> text

9、滑动和拖拽

swipe滑动
driver.swipe(start_x,start_y,end_x,end_y, duration=0)

start_x:起点x坐标
start_y:起点y坐标
end_x:终点x坐标
end_y:终点y坐标
duration:滑动这个操作,共持续的时间长度,单位:ms

10、scroll 滑动
从一个元素滑动到另一个元素,直到页面自动停止
driver.scroll(开始元素,结束元素,滑动时间=600)

从 应用滑动到更多
driver.scroll(driver.find_element(By.XPATH,‘//[@text=“应用”]‘),
driber.find_element(By.XPATH,’//
[@text=“更多”]’),
3000)

11、drag_and_drop 拖拽
从一个元素拖拽到另一个元素,无惯性(精确滑动)
driver.drag_and_drop(开始元素,结束元素)

driver.drag_and_drop(driver.find_element(By.XPATH,‘//[@text=“应用”]‘),
driber.find_element(By.XPATH,’//
[@text=“更多”]’),
1000)

二、高级手势-TouchAction

创建TouchAction对象
touch_action = TouchAction(driver)

调用高级手势对象提供所想执行的手势方法
touch_action.手势方法

执行手势
touch_action.perform()

轻敲
tap()
长按
long_press

*注意:所有手势都要通过执行perform()函数才会运行
也可以直接连续一行进行编写:
TouchAction(driver).手势方法.perform()

按下和抬起
touch_action.press() 按下

touch_action.release()抬起

移动和思考时间
模拟手指对元素或坐标的移动操作
TouchAction(driver).move_to(el=None)

模拟手指暂停到当前动作指定时间
TouchAction(driver).wait(ms=time).perform()

手机操作Api-获取分辨率和截图

driver.get_window_seze() 获取分辨率

deiver.get_screenshot_as_file(filename) 获取手机截图

获取和设置手机网络

0 None 没有任何模式
1 Airplane Mode 飞行模式
2 Wifi only Wifi模式
4 Data only 数据流量
6 All network on WIfi + 数据流量模式

获取手机网络
driver.network_connection()

设置手机网络
driver.set_network_connection(2)

使用Uiautomatorviewer连接真机报错Unexpected error java long (获取UI层次结构时出现意外错误)

android8以后sdk自带的uiautomator直接打开,截取不到机器界面信息

解决
在D:\Java\android-sdk\tools(路径自己定义就行)目录下创建app.uix文本文件
在D:\Java\android-sdk\tools(路径自己定义就行)目录下创建app.png文本文件
执行以下adb命名
adb shell uiautomator dump /sdcard/app.uix
adb pull /sdcard/app.uix D:\Java\android-sdk\tools\app.uix
adb shell screencap -p /sdcard/app.png
adb pull /sdcard/app.png ‪D:\Java\android-sdk\tools\app.png
运行uiautomatorviewer.bat,导入文件

使用uiautomatorviewer连接模拟器页面报错:Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesn’t exist!

解决方法1:

杀死adb服务器并重新启动它。

adb kill-server

adb start-server

命令面板执行这两条命令后再次连接即可

解决方法2:

命令面板运行:adb reconnect

运行后再次点击连接即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值