第五节 设计一次APP项目自动化

发布于:2023-01-04 ⋅ 阅读:(178) ⋅ 点赞:(0)

 更多文章,敬请关注微信公众号(robotframework666)

一、准备工作:

1 appium服务器启动,记录好启动的服务器路径与端口

(官网下载安装启动就可以,出现如下图所示,基本就是没问题的)

2 手机准备好,待测手机的安卓版本要查看并记录

platformName=Android

platformVersion=10

这俩参数要拿到,后面是需要用到的

3 准备好待测APP,拿到APP的包名,拿到启用的activity,拿到包名的方式有哪些?

appPackage=com.xxxxx.letalk

appActivity=com.xxxxx.letalk.ui.activity.login.UserGuideActivity

这俩参数也要拿到,后面也要用到的

下面介绍下几种常用的获取包名与MainActivity的方法:

            1 )打开xxx.apk 安装包中的 AndroidManifest.xml的文件,可以找到很多activity

    

            2) 可以通过aapt dump badging  xxx.apk的方式

    直接显示的话用命令:

            aapt dump badging xxx.apk | grep package    

            aapt dump badging xxx.apk | grep launchable-activity

    进入到sdk目录下,build-tools目录下,如图:

        3) db shell dumpsys window | grep mCurrentFocus 也是可以获取的

4 如何定位APP的元素

方式有很多,我们采用最为流行的方式,用sdk目录下,tools目录下的uiautomatorvierer.bat工具

比如我们就拿到了【登录】按钮的各种元素定位信息

另外就是还可以使用appium自带的inspect来进行:

启动的时候参数如下:

{

"remote_url": "http://localhost:4723/wd/hub",  

    #其实这个就是我们启动的本地appium服务地址

"platformVersion": "10",

      #安卓手机的安卓系统版本号

"deviceName": "192.168.25.175:7461", 

    # 手机的名称,一般用adb devices可以获取,我这里是通过STF远程真机控制的手机

"udid": "192.168.25.175:7461",

    # 这个参数与deviceName保持一致即可

"appPackage": "com.xxxx.letalk",

    # 这个就是待测包名

"appActivity": "com.xxxx.letalk.ui.activity.login.UserGuideActivity",

"platformName": "Android"

    # 安卓测试

}

上面几个参数很熟悉吧,就是我们前面步骤获取的参数

启动后可以看到,通过这种方式也是可以获取到定位信息的

二 、开始编码

1、新建项目、测试套件、测试用例

2、启动xxxAPP

3、参数化启动xxxAPP的方法,并封装成一个公共方法

4、编写登录xxxAPP的脚本

5、参数化改造登录xxxAPP的方法,并封装成一个公共方法

(下图封装登录方法,把启动app也一并写入了)

(下图为调用封装好的login方法,传入不同参数来进行测试)


 

login
    [Arguments]    ${count_username}
    AppiumLibrary.Open Application    remote_url=http://localhost:4723/wd/hub    platformName=Android    platformVersion=10    deviceName=192.168.25.175:7565    udid=192.168.25.175:7565    appPackage=com.strong.letalk    appActivity=com.strong.letalk.ui.activity.login.UserGuideActivity
    sleep    3
    Click Element    //android.widget.TextView[@resource-id=\"com.strong.letalk:id/letalk_usercenter_tv_confirm\"]
    Wait Until Page Contains Element    //android.widget.EditText[@resource-id=\"com.strong.letalk:id/letalk_usercenter_et_content\" and @text=\"请输入手机号或乐号\"]    timeout=15    error=not found
    Input Text    ${locator_username}    ${count_username}
    Input Text    //android.widget.EditText[@resource-id=\"com.strong.letalk:id/letalk_usercenter_et_content\" and @text=\"请输入密码\"]    cwx123789
    Click Element    //android.widget.ImageView[@resource-id=\"com.strong.letalk:id/letalk_usercenter_iv_privacy\"]
    Click Element    //android.widget.TextView[@resource-id=\"com.strong.letalk:id/letalk_usercenter_tv_operation\"]

    

这一个案例就可以让大家了解如何用rf来编写appium代码了,目的达到了

下面其实是在测试过程中的一些辅助方式,不做重点介绍。

三、使用录制屏幕的方法

AutoRecorder  mode=suite,test

关于这个库的用法,可以先自行百度哟,不过后期也会做专项讲解的

这种内容并不影响我们自动化的设计

四、使用sikuli库要注意的事情

    (sikuli用于图像识别来进行测试,之后会讲解)

    解决产生垃圾文件的方法,sikuli.py改成new就可以

        启动与关闭的使用

五、APP自动化必不可少的辅助操作方法:如何自定义定位方法?

    相对坐标click方法如何设计

    图像识别的目标匹配+返回坐标+CLICK 方法如何设计

总结下:

        就是让大家了解下,如何用RF于Appium来进行一次安卓移动端的自动化测试


网站公告

今日签到

点亮在社区的每一天
去签到