Robotframework+appium 实现移动端自动化测试

Robotframework+appium 实现移动端自动化测试

一 环境搭建:

RobotFramework+Appium环境搭建

二 脚本实例

前置条件:

1.开启Appium Server GUI;

在这里插入图片描述

2.开启Appium Inspector:方便随时获取元素属性;

开启后需输入:platformName Android,并启动会话
在这里插入图片描述

3.打开虚拟机或链接上测试机;

4.获取待测应用信息:

在这里插入图片描述
其中appPackage、appActivity获取方式如下:

1.aapt命令来获取包名

aapt dump badging E:\XXX.apk(本地apk包路径)
在这里插入图片描述
appPackage的值如上
在这里插入图片描述
appActivity的值如上;

2.adb命令来获取当前打开应用的包名

a 测试机或模拟器上打开待测应用,命令提示符中输入:

adb shell dumpsys window | findstr mCurrentFocus

在这里插入图片描述
前面是appPackage的值,后面是appActivity的值

b 测试机或模拟器上打开待测应用,命令提示符中输入:

adb shell dumpsys window | findstr mFocusedApp

在这里插入图片描述

2.1微信登录

在这里插入图片描述
首先打开微信,使用关键字Open Application:

Open Application        http://localhost:4723/wd/hub        platformName=Android        deviceName=127.0.0.1:62001        appPackage=com.tencent.mm        appActivity=.ui.LauncherUI        noReset=True        platformVersion=7.1.2

接着inspector中获取手机号xpath路径:

input text        //*[@text='请填写手机号']        18000000000

或者添加类型:属性class的值:

input text        //android.widget.EditText[@text='请填写手机号']        18000000000

也可以通过resource-id识别:

input text        id=com.tencent.mm:id/cd7        18000000000 

由于每台手机的id值不一样,不建议使用ID识别
使用其他手机登录微信的脚本如下:
在这里插入图片描述

2.2进入微信小程序-店店U惠

进入微信小程序涉及到页面的滑动,此处通过swipe实现向下滑动功能
在这里插入图片描述

在这里插入图片描述

Wait Until Element Is Visible        //*[@text='我']        10                                
#获取屏幕大小                                                
${width}        Get Window Width                                        
${height}        Get Window Height                                        
log        width is ${width},hetght is ${height}                                        
${start_x}        Evaluate        ${width}/2                                
${start_y}        Evaluate        ${height}/4                                
${end_x}        Evaluate        ${width}/2                                
${end_y}        Evaluate        ${height}/4*3                                
Swipe        ${start_x}        ${start_y}        ${end_x}        ${end_y}        1000        
Wait Until Element Is Visible        //*[@text='店店U惠']        10                                
click element        //*[@text='店店U惠']                                        
log        ----------------开始断言 ------------------------                                        
${result}        run keyword and return status        Run Keyword And Continue On Failure        Wait Until Page Contains        正在加载...                
run keyword if        ${result}==True        log        店店U惠小程序加载中...        ELSE        Fail        点击小程序失败!

2.3微信退出

微信的退出页面存在一个向上滚屏的功能,同样使用swipe实现
在这里插入图片描述
在这里插入图片描述

Open Application        ${REMOTE_URL[0]}        platformName=${platformName[0]}        deviceName=${deviceName[0]}        appPackage=${appPackage[0]}        appActivity=${appActivity[0]}        noReset=True        platformVersion=${platformVersion[0]}        
AppiumLibrary.Wait Until Element Is Visible        xpath=/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.view.ViewGroup/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.RelativeLayout[4]/android.widget.LinearLayout        10                                                
AppiumLibrary.Click Element        xpath=//*[@text='我']        #我标签页                                                
AppiumLibrary.Wait Until Element Is Visible        xpath=//*[@text='设置']        10                                                
AppiumLibrary.Click Element        xpath=//*[@text='设置']        #点击设置                                                
#获取屏幕大小                                                                
${width}        Get Window Width                                                        
${height}        Get Window Height                                                                                                              
${start_x}        Evaluate        ${width}/2                                                
${start_y}        Evaluate        ${height}/4*3                                                
${end_x}        Evaluate        ${width}/2                                                
${end_y}        Evaluate        ${height}/4                                                
wait Until Element Is Visible        xpath=//*[@text='通用']        10           #等待进入设置页面                                     
Swipe        ${start_x}        ${start_y}        ${end_x}        ${end_y}        1000        #滑动页面到退出按钮位置                                                               
Wait Until Element Is Visible        xpath=//*[@text='退出']        10                                                
Click Element        xpath=//*[@text='退出']        #点击退出按钮                                                
Wait Until Element Is Visible        xpath=//*[@text='退出登录']        10                                                
Click Element        xpath=//*[@text='退出登录']        #点击退出登录                                                
log        ----------------开始断言 ------------------------                                                        
${result}        run keyword and return status        Run Keyword And Continue On Failure        Wait Until Page Contains        正在退出                                
run keyword if        ${result}==True        log        发起退出成功!        ELSE        Fail        发起退出失败!                [添加链接描述](https://quanjing.feishu.cn/9dba2035-9cc0-4544-b8f8-6fa144ceceb8)

三 遇到问题:

1. appium连接真机报错:Failed to create session. An unknown server-side error occurred while processing the command.

在这里插入图片描述
第一次连接真机没有安装 Appium Settings,只开启了usb调试,导致uiautomator可以连接 AppiumInspect连接报错,开启权限即可
在这里插入图片描述
在这之前APPIUM报错:occurred while processing the command. Original error: The desired capabilities must include either an app, appPackage or browserName
添加了:“automationName”:“UiAutomator1” 然后就换了错误提示,由于之前在模拟器上操作过,突然意识到是移动端没有安装Appium Settings,安装Appium Settings后,“automationName”:"UiAutomator1"就可以去掉了

附:appium -Android keycode

appium -Android keycode
电话按键:

键名                  描述       键值
KEYCODE_CALL        拨号键     5
KEYCODE_ENDCALL     挂机键     6
KEYCODE_HOME        按键Home      3
KEYCODE_MENU        菜单键     82
KEYCODE_BACK        返回键     4
KEYCODE_SEARCH      搜索键     84
KEYCODE_CAMERA      拍照键     27
KEYCODE_FOCUS       拍照对焦键   80
KEYCODE_POWER       电源键     26
KEYCODE_NOTIFICATION 通知键        83
KEYCODE_MUTE        话筒静音键   91
KEYCODE_VOLUME_MUTE 扬声器静音键  164
KEYCODE_VOLUME_UP   音量增加键   24
KEYCODE_VOLUME_DOWN 音量减小键   25

控制按键:

> 键名                                     描述          键值
KEYCODE_ENTER               回车键         66
KEYCODE_ESCAPE              ESC键            111
KEYCODE_DPAD_CENTER         导航键 确定键     23
KEYCODE_DPAD_UP             导航键 向上      19
KEYCODE_DPAD_DOWN           导航键 向下      20
KEYCODE_DPAD_LEFT           导航键 向左      21
KEYCODE_DPAD_RIGHT          导航键 向右      22
KEYCODE_MOVE_HOME           光标移动到开始键    122
KEYCODE_MOVE_END            光标移动到末尾键    123
KEYCODE_PAGE_UP             向上翻页键       92
KEYCODE_PAGE_DOWN           向下翻页键       93
KEYCODE_DEL                 退格键         67
KEYCODE_FORWARD_DEL         删除键         112
KEYCODE_INSERT              插入键         124
KEYCODE_TAB                 Tab键            61
KEYCODE_NUM_LOCK            小键盘锁            143
KEYCODE_CAPS_LOCK           大写锁定键       115
KEYCODE_BREAK               Break/Pause键    121
KEYCODE_SCROLL_LOCK         滚动锁定键       116
KEYCODE_ZOOM_IN             放大键         168
KEYCODE_ZOOM_OUT            缩小键         169

组合键:

键名              描述
KEYCODE_ALT_LEFT    Alt+Left
KEYCODE_ALT_RIGHT   Alt+Right
KEYCODE_CTRL_LEFT   Control+Left
KEYCODE_CTRL_RIGHT  Control+Right
KEYCODE_SHIFT_LEFT  Shift+Left
KEYCODE_SHIFT_RIGHT Shift+Right

基本按键:

键名      描述  键值
KEYCODE_0   按键'0'   7
KEYCODE_1   按键'1'   8
KEYCODE_2   按键'2'   9
KEYCODE_3   按键'3'   10
KEYCODE_4   按键'4'   11
KEYCODE_5   按键'5'   12
KEYCODE_6   按键'6'   13
KEYCODE_7   按键'7'   14
KEYCODE_8   按键'8'   15
KEYCODE_9   按键'9'   16
KEYCODE_A   按键'A'   29 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_B   按键'B'   30 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_C   按键'C'   31 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_D   按键'D'   32 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_E   按键'E'   33 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_F   按键'F'   34 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_G   按键'G'   35 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_H   按键'H'   36 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_I   按键'I'   37 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_J   按键'J'   38 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_K   按键'K'   39 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_L   按键'L'   40 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_M   按键'M'   41 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_N   按键'N'   42 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_O   按键'O'   43 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_P   按键'P'   44 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_Q   按键'Q'   45 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_R   按键'R'   46 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_S   按键'S'   47 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_T   按键'T'   48 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_U   按键'U'   49 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_V   按键'V'   50 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_W   按键'W'   51 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_X   按键'X'   52 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_Y   按键'Y'   53 metastate=1(大写)metastate=0(小写) 默认小写
KEYCODE_Z   按键'Z'   54 metastate=1(大写)metastate=0(小写) 默认小写
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值