Robotframework+Appuim自动化测试入门:开启指定APP

正常步骤:

1、环境搭建好后,在cmd中运行ride.py或者创建ride的快捷方式启动ride

2、打开appium server,记得要点右上角的三角形符号才是开启了服务器,否则只是打开了软件而已

2、在ride中新建测试用例,使用Open Application关键字(关键字查找F5)打开手机指定APP,需要添加AppiumLibrary库

3、Open Application需要的Desired Capabilities分别如下:

  • http://localhost:4723/wd/hub(由于appium服务器搭建在本地,故该URL固定,端口号4723可在appuim图形界面中的设置按钮中查看)
  • platformName:被测的平台名称(开启appium服务器后可看到)
  • platformVersion:平台版本(开启appium服务器后可看到),填写下图中的23或者实际安卓系统版本号均可

platformName和platformVersion查看如下:

  • deviceName:设备名称,通过cmd运行adb devices命令获得
  • app:被测应用的存储路径(xxx.apk),该参数适用于未在手机上安装该应用时使用,使用了改参数则不需要下面的appPackage和appActivity参数了;如果已安装被测的应用则不需要该参数,只需要appPackage和appActivity参数(appPackage和appActivity参数见下面介绍)
  • appPackage:app的包名(获取方法下面介绍)
  • appActivity:app的activity名(获取方法下面介绍)

最后的测试用例效果如图:

4、点击运行,可成功开启指定app

 

重点(敲黑板):

获取appPackage和appActivity的方法(app已安装在手机上,无apk时):

说在前面:网上有很多关于获取appPackage和appActivity的方法,大家可以自行搜索,但一定要注意的是,一个appPackage对应很多个appActivity,我们要找对appActivity才可实现对应的功能!!!楼主因为找错了activity,一直出错,查了很久才查出原因!!

本文采用的具体方法介绍:

1、在cmd命令行中输入命令:adb logcat>D:/log.txt(此处的D:/log.txt为你想要存放log日志信息的路径,可自定义)

2、手机上打开想要被测的app进行一些操作(操作任意,但一定要包含打开app这个操作,因为我们现在要进行的是Open Application即打开APP的测试,所以我们要获取该操作的activity)

3、在cmd命令行中按ctrl+c退出adb logcat命令

4、接下来我们开始找appPackage,方法为:查看log.txt文件,搜索PackageName,会查找出来很多appPackage,这是因为在第2步打开被测app之前就已经输入了第1步的命令,已经开始记录手机内容了,所以这里我们要进行判断,本文筛选标准为app名称,如本文中打开一个彩票软件,得到的log.txt效果如下:

Robotframework+Appuim自动化测试入门:开启指定APP_第1张图片

可以得到appPackage=com.iwincaipiao

 

5、找到appPackage后,我们要开始找这个appPackage中的activity了,方法为:在log.txt中搜索com.iwincaipiao(即找到的appPackage名字),也会搜索到很多activity,我们也需要进行筛选,筛选标准为launch启动,如下图所示:

可以得到appActivity=com.joylottery.modules.launch.LaunchActivity

6、done

 

说在后面:

墙裂吐槽:网上有一种获取appPackage和appActivity的方法为:

1、手机打开待测app

2、电脑cmd中输入命令:adb shell

3、再输入:dumpsys window windows | grep -E 'mCurrentFocus|FocusedApp'

4、说获取的内容即为appPackage和appActivity,如下图:

Robotframework+Appuim自动化测试入门:开启指定APP_第2张图片

5、该种方法确实能获取到appPackage和appActivity,但却不是我们需要的,原因在于我们需要的是开启的activity,而该种方法获得的却是开启后的activity!!!

 

常见错误:

1、SessionNotCreatedException: Message: A new session could not be created. (Original error: Command failed: C:\windows\system32\cmd.exe /s /c "D:\android-sdk-windows\tools\adb.exe -s 8BN0217922002675 shell "am start -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000 -n com.iwincaipiao/com.joylottery.modules.main.MainActivity""

Security exception: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.iwincaipiao/com.joylottery.modules.main.MainActivity } from null (pid=6028, uid=2000) not exported from uid 10182

原因:activity错误

解决方法:将appActivity由com.joylottery.modules.main.MainActivity改为com.joylottery.modules.launch.LaunchActivity即可。

 

2、SessionNotCreatedException: Message: A new session could not be created. (Original error: Command failed: C:\windows\system32\cmd.exe /s /c "D:\android-sdk-windows\tools\adb.exe -s 8BN0217922002675 install "C:\Program Files (x86)\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk""

adb: failed to install C:\Program Files (x86)\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk: Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install io.appium.settings without first uninstalling.]

原因:手机上已经安装了appium setting和unlock两个app

解决方法:

方法一:卸载手机上的appium setting和unlock两个app

方法二:修改源码文件android.js-->注释安装appiumSettings和unlock的两行代码(如下图),注释后需重启appium和ride:

文件路径:C:\Program Files (x86)\Appium\node_modules\appium\lib\devices\android\android.js

Robotframework+Appuim自动化测试入门:开启指定APP_第3张图片

 

3、出现command failed shell:............ps:'uiautomator"错误:

参考https://www.cnblogs.com/syw20170419/p/7994482.html

 

4、error: Unhandled error: Error: ENOENT, no such file or directory 'C:\AndroidSDK\sdk\tools;C:\AndroidSDK\sdk\platform-tools;C:\AndroidSDK\sdk\build-tools;\build-tools'

原因:环境变量ANDROID_HOME设置出错

解决方法:

1、查看环境变量ANDROID_HOME,注意环境变量最后一个值不能带分号“;” 重试,不能解决进行下一步

2、如果环境变量ANDROID_HOME为用户变量,则在系统变量Path中不能用%ANDROID_HOME%替代,只有ANDROID_HOME为系统变量时才可,重试,不能解决进行下一步

3、查看ANDROID_HOME的值是否正确,楼主由于事先安装了带SDK的android studio,后来又安装了独立的android sdk,导致环境变量中ANDROID_HOME包含了两个SDK的路径,导致出错,卸载android studio及附带的sdk后,将ANDROID_HOME中与之相关路径删掉即可,或者直接将ANDROID_HOME中与之相关路径删掉,重试,不能解决检查上两步是否正确。

 

5、出现error::[INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install io.appium.android.ime without first uninstalling.]

解决方法:在cmd 中输入命令  adb uninstall io.appium.android.ime

你可能感兴趣的:(测试)