APP自动化

本文详细介绍了安卓自动化测试的环境搭建,包括命令行安装和界面版安装Appium,以及安卓基础命令的使用。同时,讲解了Appium的工作原理,并展示了如何编写脚本来定位元素、实现页面滑动和手势操作。此外,还提供了元素滑动和手势解锁的具体代码示例。
摘要由CSDN通过智能技术生成

环境搭建

命令行形式安装

(1)公用软件安装:
安装jdk1.8并配置环境变量——sdk安装并配置环境变量——node安装(一般会自动配置环境变量)——安装安卓模拟器夜神并启动——检查 adb(adb) 及设备连接(adb connect 127.0.0.1:62001 adb devices)

(2)appium安装:
npm -g install appium@1.15.1
检查:appium
npm -g install appium-doctor
检查:appium-doctor

界面版安装

Appium-desktop 版本安装:
下载地址:https://github.com/appium/appium-desktop/releases/tag/v1.15.1
下载后一路默认安装
界面版可以进行元素定位调式、脚本录制

安卓基础命令

连接模拟器:adb connect 127.0.0.1:62001
检查连接设备:adb devices
安装app:adb install D:\douban.apk
指定设备安装app:adb -s 设备名称 install D:\douban.apk
卸载app:adb uninstall “com.douban.frodo” (app包名)

查看app的包名和activity:aapt d badging D:\douban.apk|findstr “package launchable-activity”

没有app源文件的情况下查看app包名:模拟器打开app——UI Automator viewer或Appium查看字段package的值

查看真机APP当前界面的包名和activity: adb shell dumpsys window windows|findstr “mCurrent”

判断是否已经安装某APP:adb shell dumpsys package 包名

向设备传输文件:adb push D:\a.txt /data/local/tmp (安卓系统是改装过的Linux系统)
进入设备系统:adb shell
从设备拉取文件到电脑:adb pull /data/local/tmp/a.txt D:\a.txt
抓设备日志:adb logcat
收集日志:adb logcat>D:\log.txt (>覆盖 >>追加)
查看安卓版本:adb.exe -P 5037 shell getprop ro.build.version.sdk
查看发布的安卓的版本:
adb.exe -P 5037 shell getprop ro.build.version.release

windows的命令:
查看端口是否被占用:netstat -ano|findstr 5037
杀掉进程:taskkill -f -pid 进程号
杀掉adb:adb kill-server
重启adb:adb start-server

Appium工作原理

在这里插入图片描述

脚本编写

pom.xml文件配置相关jar包:java-client

执行脚本前步骤:1. 启动appium;2.检查设备连接

定位元素

工具:UI Automator viewer或Appium(可进行元素定位调式)
方法:
在这里插入图片描述

driver.findElement(MobileBy.AndroidUIAutomator("text(\"我的\")")).click();
driver.findElement(MobileBy.AccessibilityId("Navigate up")).click();        //返回"我的"页面

id与xpath定位方式与web端一样(安卓端的id是resource-id字段)

页面滑动

整屏滑动

public void swipeToUp() {
    int x=driver.manage().window().getSize().getWidth();//应用占用屏幕的宽
    int y=driver.manage().window().getSize().getHeight();//应用占用屏幕的高
    TouchAction ta=new TouchAction(driver);
        ta.press(PointOption.point(x/2, 8*y/10)).waitAction(WaitOptions.waitOptions(Duration.ofMillis(500))).
                moveTo(PointOption.point(x/2, 2*y/10)).release().perform();
    }

元素滑动

public void swipeOnElement(AndroidElement element,String direction){

    int start_x = element.getLocation().getX();//起始点坐标X
    int start_y = element.getLocation().getY(); //起始点坐标Y
    int width = element.getSize().getWidth();//生日中年份的宽
    int height = element.getSize().getHeight();//生日中年份的高

    switch (direction.toLowerCase()){
        case "up":
            swipe(start_x+width/2,start_y+8*height/10,start_x+width/2,start_y+2*height/10,500);
            break;
        case "down":
            swipe(start_x+width/2,start_y+2*height/10,start_x+width/2,start_y+8*height/10,500);
            break;
        case "left":
            swipe(start_x+8*width/10,start_y+height/2,start_x+width/2,start_y+2*height/10,500);
            break;
        case "right":
            swipe(start_x+2*width/10,start_y+height/2,start_x+8*width/10,start_y+height/2,500);
            break;
        default:
            throw new RuntimeException("方向参数错误");

    }
}

滑动年份都指定年份

//滑动年到指定年份
String exceptYear = driver.findElement(By.id("android:id/numberpicker_input")).getText();
while (!exceptYear.equals("1996")){
    if(Integer.parseInt(exceptYear)>1996){
        utils.swipeOnElement(year,"down");
    }else if(Integer.parseInt(exceptYear)<1996){
        utils.swipeOnElement(year,"up");
    }
    exceptYear = driver.findElement(By.id("android:id/numberpicker_input")).getText();

}

手势解锁

获取手势元素的起始点坐标和宽、高,宽和高分别六等分可以得到九个点的坐标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值