【四. 下载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脚本:
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去打开这俩个,也一样可以万能的解决解析问题!
具体命令:
# 截取设备当前页面的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
当这个俩个图成功储存到你的电脑中,你用工具打开即可:
好了,暂时说到这里。欢迎继续收听!
















