首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【实测】m1芯片mac 如何配置appium (2022年最新)

【实测】m1芯片mac 如何配置appium (2022年最新)

作者头像
我去热饭
发布2022-05-19 16:20:42
发布2022-05-19 16:20:42
2.2K0
举报
文章被收录于专栏:测试开发干货测试开发干货

首先,经过本人的踩坑,终于成功部署了m1 mac的appium & android

这就立马趁着没忘记录下来:(我劝大家赶紧把这个文章保存成标签!)

注意,还没有下载过brew 或者 npm node的,请先百度这些工具的下载方案,再来部署该自动化。

先看看我电脑的系统:

【一,找个模拟器】

大家不用去试了,什么ye神,什么雷dian,什么助手的,m1芯片一律不行,要么就是不支持,要么就是卡到99%。

这里公布一个最好用的办法,直接下载:

https://github.com/google/android-emulator-m1-preview/releases

然后安装成功后:

启动后流畅度一般,而且关闭的话有概率卡死,但是并不影响我们做自动化。

注意,这个模拟器,未设置的情况下,只支持你用adb install apk包 命令来安装app。

【二,jdk下载】

注意,后面的这个51版本号千万不要太高,我用的是45.

安装之后,别忘了配置环境变量。

这里要说下,mac m1的环境变量文件是:~/.zipfile

可复制,注意后面要用你的jdk的文件路径哦!!!

代码语言:javascript
复制
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

【三,android sdk】

这个大家总是会忘,我给大家梳理一下,先去下载一个android tools。然后下载后,里面会有俩个关键的东西,一个是android文件,一个是uiautomatorviewer文件。(其实后者用不到)

地址:https://www.androiddevtools.cn/

下载解压后,会有这样一个文件夹:(注意你解压后,没有看到platform-tools,build-tools等文件夹才正常。只要确保这个tools文件夹内有android文件即可。

启动这个android。

然后选前三个:

(第一个是更新tools,第二个是下载platform-tools,第三个是下载Build-tools) 我这里因为已经更新过tools了,所以没再显示。

然后点击安装按钮,上面显示的数字和图中并不一样没关系。

然后左边选中你刚刚选的三个文件,右侧点击Accept License 。

我这图里只有一个,别受图的影响。你应该选了刚刚那三个文件。

然后点击install后,就是漫长的等待。等完全安装后,关闭这个东西。再回头看你的文件夹就和我的一样多了。

注意上图,此时的platform-tools内的第一个文件就是传说中的adb。此时你可以去终端输入adb devices,看看是否如图显示:

总之,没有输出说不知道adb是什么东西就算成功了。

紧接着就是配置环境变量:仍然是打开.zprofile文件,然后写好下面的三行。

复制代码,但是注意修改成你自己的sdk根目录哦!!!

代码语言:javascript
复制
export ANDROID_HOME=/Users/wangzijia/Downloads/android-sdk-macosx
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools

退出保存,这个是vi编辑器的基础技术,希望你会这个。

先按ESC,然后输入冒号,然后输入wq! 然后回车。就是强制保存退出了!

这个是linux操作的基础!!!

保存成功后,别忘了重载这个文件:

代码语言:javascript
复制
source .zprofile

输入完回车,没报错就算ok。

【四. 下载appium】

可以下载桌面版,也可以命令版。这个看个人需要。我是都下载了。

命令版:

npm install -g appium

npm install -g appium-doctor

然后执行appium-doctor,看看有多少报错.

只要其中的 Home,ANDROID_HOME,JAVA_HOME 没出现小红叉叉,基本就没事了。或者去百度下这些小红×后面的文案,就会很简单的解决掉了。

比如 这行报红×:

那你可以直接下载这个缺失的组件:brew install carthage

之后执行的时候,就是先启动appium,然后运行脚本。

appium正常启动效果:

桌面版也一样:

地址:https://github.com/appium/appium-desktop/releases/tag/v1.17.1-1

下载安装后:

先启动一下,看看有啥报错。注意,此时你应该已经开启了模拟器或者链接了真机,并且确保adb devices可以看到这个设备,状态为:device

然后点击Start Server按钮:

此时就相当于命令行执行了appium命令一样了。只不过输出都在这个桌面版里了。

一般这种时候,如果你有脚本,就执行脚本,就可以了。

但是没有脚本的话,怎么来测试,甚至定位元素呢?

就是点击右上角这个放大镜:

然后好好写这个启动配置:

注意这里我用的是v信的包来进行测试。platformName 和appPackage和appActivitys的值是固定的。

而那个deviceName的值是你通过adb deivces来拿到的设备号:

基本填了这四项,就可以点击右下角的Start Session了。

执行后,启动需要十几秒,这期间这个面板会缓冲卡死一样,别担心,把精力主要放在appium的日志输出上,检查是否有错误,而警告类可以先忽略。

app启动成功后,如图:

此时可以定位其中的各种元素,然后开心的写脚本。

到这,基本上环境算是部署完了,之后写完脚本后,每次都要重启一下appium服务,这是因为要重新建立一个session对话。

我的demo脚本:

代码语言:javascript
复制
from appium import webdriver
import time

desired_caps = {}
desired_caps['platformName'] = 'Android' #设置平台
desired_caps['deviceName'] = 'emulator-5554' #设备id
desired_caps['autoLaunch'] = 'true' #是否自动启动
desired_caps['appPackage'] = 'com.tencent.mm'
desired_caps['appActivity'] = 'com.tencent.mm.ui.LauncherUI'

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

driver.quit()

但是appium的这个启动,估计还是会有不少人报错,各种各样的错。大家可以自行百度,也可以公众号内留言咨询。

结尾额外说一下传统的uiautomatorviewer定位工具。它就在我们android sdk文件夹下的tools文件夹的最后一个:

正常启动后是这样的:

然后点击上面的绿色安卓手机按钮,既可以把正在打开的模拟器/设备 的截图弄出来。

不过在这个过程中,你大概率会遇到好几个问题!

问题1:

这个问题是你没有关闭appium服务 导致,所以先去关掉。然后最好重启adb和uiautomatorviewer 。当然如果还报这个错,说明appium的服务或者某个进程仍在干扰,大不了你就重启电脑和模拟器。

问题2:

打开uiautomatorviewer直接卡死,界面图像都没有显示完全。

这是因为你的jdk小版本号太高了导致,这也就是为什么我前面让大家下载jdk1.8 的 51以下的原因。

卸载jdk的话,请千万去百度搜一下彻底卸载的方案,否则卸不干净会容易引发更多问题。

问题3:

仍然报错,然后你点开Details 查看详情显示:

java.lang.reflect.InvocationTargetException

这个问题是因为android8.0以上支持不了导致。需要你下载并替换四个jar包才行。(tools/lib中ddmlib、ddms、ddmuilib 、uiautomatorviewer这四个jar包)

jar包下载地址:(需要积分,加v私聊免费传)

https://download.csdn.net/download/qq_22795513/85057471

替换完成后,重启这个工具即可正常解析!!!

当然还有一些麻烦的办法:

比如,手动用adb命令来截图和uix文件,截图到手机的临时本地中,然后再用adb命令把截图和uix上传到你的电脑文件夹内,然后再用uiautomatorviewer去打开这俩个,也一样可以万能的解决解析问题!

具体命令:

代码语言:javascript
复制
# 截取设备当前页面的uix文件
adb shell uiautomator dump /sdcard/test.uix
#上传到你电脑的某个文件夹
adb pull /sdcard/test.uix 你电脑本地地址/test.uix
# 截取设备当前页面的png图片
adb shell screencap -p /sdcard/test.png
# 上传到你电脑的某个文件夹 
adb pull /sdcard/test.png 你电脑本地地址/test.png

当这个俩个图成功储存到你的电脑中,你用工具打开即可:

好了,暂时说到这里。欢迎继续收听!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发干货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • java.lang.reflect.InvocationTargetException
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档