环境:
- MacOS:10.13.6
- Virtualbox:5.2.22
- Genymotion:genymotion-2.12.2
本文Virtualbox、Genymotion下载地址:
链接:https://pan.baidu.com/s/1ACubK3jiCdKBxZ-oiJVLTg 密码:5nt5
一、下载Virtualbox(Genymotion的运行需要依赖VirtualBox)
①官网地址下载:https://www.virtualbox.org/wiki/Downloads
②参考上面链接下载
安装过程中安装失败,如图:
参考:《macOS 10.13 安装Virtualbox失败》
原因:virtualbox在安装的时候需要安装内核扩展(Kernel extenstion),而macOS 10.13 High Sierra的新安全特性会阻止外部内核扩展的安装,所以安装总是会被系统拦截。
解决办法:
打开“系统偏好设置”->“安全性与隐私”->“通用”->点击“允许”
再次安装,显示成功!
二、安装genymotion
两种方式:
①先登录,没账号先注册,才能下载
②直接下载参考文章开头链接:下载完成后安装并启动登录:用的网友提供的账号密码(账号 : csdntest 密码 : admin123456)
设置SDK:/Users/xxx/xxx/android-sdk-macosx
个人使用
添加虚拟设备
安装虚拟机:
启动虚拟设备:
打开终端,输入:
$ adb devices
List of devices attached
192.168.56.101:5555 device
三、appium-desktop结合虚拟机进行自动化
接下来有几个adb设备的命令操作:
# 进入手机应用交互 adb shell # 当前虚拟设备启动的app ps # 当前虚拟设备的目录 ls # 当前虚拟设备连接多少对外的服务 netstat -tn # 当前虚拟设备监听端口 netstat -tln # 退出 exit
然后下载或者要测试的aapk软件,下面介绍查看aapk的命令:
但是aapt不存在,解决办法为:《Mac环境下adb、aapt环境配置和常用指令》、《-bash: aapt: command not found》
# 查看包的内容 aapt dump badging xxx.apk | less # 查看aapt命令 aapt 2>&1 |less # 列举包有什么文件 aapt list xxx.apk |less #/lib:查看lib下是不是【armeabi】、【x86】,x86的apk可以安装在模拟器中 # 解压apk unzip ../xxx.apk # 研发设置各种各样字符串的资源 aapt dump strings xxx.apk # 进入Android里 cd $ANDROID_HOME # 回到原目录 cd $OLDPWD
# 在模拟器中安装apk软件 $ adb install xxx.apk xxx.apk: 1 file ...ed. 4.6 MB/s (8097679 bytes in 1.692s) pkg: /data/local/tmp/xxx.apk Success # 删除存在的包再安装 adb install -r xxx.apk # 查看模拟器设备的信息 adb logcat # 模糊搜索 adb logcat | grep -i activitymanager.*cmp= # 或 adb logcat | grep --line-buffered -i activitymanager.*cmp= | awk ‘{print $(NF-6)}‘
打开软件,下面cmp是需要的参数:
11-22 01:49:04.484 626 638 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=cn.sqm.citymine_safety/.activity.LauncherActivity (has extras)} from uid 10008 on display 0
下面才开始结合appium-desktop设置参数:
参考官方地址:https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md
{ ①"deviceName": "192.168.56.101:5555", ②"platformName": "Andriod", ③"appPackage": "cn.sqm.citymine_safety", ④"appActivity": ".activity.LauncherActivity" }
①设备号通过adb devices获取
②平台名
③④通过 adb logcat中的cmp获取,上面刚讲的。
取Launcher后面的cmp{}.
最后点击session启动app,并且可以定位元素写代码了,如下:
参考:
《【已解决】关于Mac上的Genymotion模拟器的几个问题》
【Mac + Appium + Python3.6学习(六)】之安装Android模拟器(Genymotion)并运行模拟器进行自动化