这篇文章主要是记录自己在工作中遇到的问题,以备日后遇到同类问题后能够快速解决。也希望这篇文章能对一些技术小白有一些帮助。讲解如有不当之处还请指出,共同进步,在此感谢。
因国内不是太好下载appium,首先附上appium的网盘下载链接:
Appium下载链接,密码: e7dr
我们在工作中有时会与环境变量打交道,什么Android环境变量,JAVA环境变量,对于小白来说,真的挺头疼得。网上更多的是关于Windows的配置方法,对于Mac的配置方法比较少,有的一些也似乎有时解决不了问题。
这里所提到的环境变量的配置方法是在我在安装Appium时遇到的问题,一个是“Android-HOME not set”,另一个是“JAVA-HOME not set”。我们在安装Appium时可能会有很多问题问题,但是有些问题都是因为这两个环境变量没有配置导致的,所以只要将这两个问题解决,一连带几个问题都不存在,问题如截图:
我们在运行Appium 的时候是需要多个文件支持的,比如JAVA环境和Android环境。如果Appium找不到这些环境,就会报错。所以我们需要配置这些环境变量。
首先打开终端,输入命令:open .bash_profile或者vim ~/.bash_profile(在此之前你必须已经创建了这样一个.bash_profile文件,如果没有,请创建:touch .bash_profile).
使用这两个命令都可以直接进入profile文件:
使用open .bash_profile金可以直接进行编辑,编辑完以后command+s进行保存即可;
使用vim ~/.bash_profile则不能直接编辑,此时点按字母“i”进入编辑模式,然后就可以对文本进行编辑,编辑完以后,点按“esc”键,即可退出编辑模式,然后输入“:wq”即可保存退出文本。如果你不太会使用Vim文本编辑器,可以在终端输入
vimtutor
查看Vim自带教程。
当我们进入到文本编辑器以后,就可以配置Android和JAVA环境变量了,前提是你已经安装了Android和Java的开发环境。可能每个人的环境变量不一样,一般你没有自己改变其位置,这些变量位置是一样的,如图:
export ANDROID_HOME=/Users/guxuecheng/Library/Android/sdk
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
。这里说了,是在安装Appium时缺少环境变量的问题,但是我们在安装Appium时一般还会遇到其他问题,这里我把我遇到的问题一并列出,并给出解决方法:
错误一、[Error:Couldnot detect MacOS XVersion from sw_vers output:'10.12.4']
如图:
这个问题比较麻烦,解决起来还是比较麻烦的。我会列出详细步骤,一定照做,不要输错,否则很麻烦:
第一步,输入命令:vim/Applications/Appium.app//Contents/Resources/node_modules/appium/node_modules/appium-support/build/lib/system.js
做如下修改:
找到下面几行代码:
case 10:
_arr = ['10.8', '10.9', '10.10', '10.11'];
_i = 0;
改为:
case 10:
_arr = ['10.8', '10.9', '10.10', '10.11','10.12'];
_i = 0;
第二步,输入一下命令:vim/Applications/Appium.app//Contents/Resources/node_modules/appium/node_modules/appium-support/lib/system.js
做如下修改(这里需要修改两处):
修改一:
找到如下代码:
try {
stdout = (await exec('sw_vers', ['-productVersion'])).stdout;
}
改为:
try {
stdout = (await exec('sw_vers', ['-productVersion'])).stdout.trim();
}
修改二:
找到如下代码:
for (let v of ['10.8', '10.9', '10.10', '10.11']) {
if (stdout.indexOf(v) === 0) { return v; }
}
改为:
for (let v of ['10.8', '10.9', '10.10', '10.11','10.12']) {
if (stdout.indexOf(v) === 0) { return v; }
}
第三步:输入以下命令:vim/Applications/Appium.app//Contents/Resources/node_modules/appium-support/build/lib/system.js
找到如下代码:
case 10:
_arr = ['10.8', '10.9', '10.10', '10.11'];
_i = 0;
修改为:
case 10:
_arr = ['10.8', '10.9', '10.10', '10.11','10.12'];
_i = 0;
第四步:输入以下命令:
vim/Applications/Appium.app//Contents/Resources/node_modules/appium-support/lib/system.js
这里需要做两处修改
第一处:
找到如下代码:
try {
stdout = (await exec('sw_vers', ['-productVersion'])).stdout;
}
改为:
try {
stdout = (await exec('sw_vers', ['-productVersion'])).stdout.trim();
}
第二处:
找到如下代码:
for (let v of ['10.8', '10.9', '10.10', '10.11']) {
if (stdout.indexOf(v) === 0) { return v; }
}
改为:
for (let v of ['10.8', '10.9', '10.10', '10.11','10.12']) {
if (stdout.indexOf(v) === 0) { return v; }
}
错误一解决办法出处:https://stackoverflow.com/questions/40129794/how-to-fix-error-could-not-detect-mac-os-x-version-from-sw-vers-output-10-12。
错误二、Cannot read property ‘replace’ of undefined
错误如图:
解决所有问题以后再次点击下图1处:
如果出现下图2处的信息,说明安装Appium成功,可以进行接下来的学习了:
错误三:Carthage was NOT found!
这个原因是因为缺少Carthage(这是个啥东西?自己Google吧),解决办法就是装上他:
brew update
brew install update
补充:
一、环境变量PATH的语法解释:
${}为占位符,${PATH} 和 $PATH等效
=前后不能有空格
: 为分隔符(等同于windows环境变量中的 ; )
PATH=$PATH:xxx 可以理解为 " PATH+=xxx "(当然不能这么写)
PATH=xxx:$PATH这种写法亦可,只是前后顺序的问题;
二、bash 和 zsh
linux 和 unix 两个操作系统默认的 shell 都是 bash,所以我在文章开始配置环境变量也是用的 bash,这样我也用了很长一段时间,直到
今天我发现我的 adb 命令居然都用不了了,检查了一下环境变量也没错,无奈请教了一下公司大牛,原来是因为我的环境变量都使用了 .zshrc文件 ,原来的 .bash_profile配置文件就不起作用了。为什么会这样呢?原来是因为之前我一个同事在我电脑上把我的bash 环境变量切换到了 zsh。好吧,zsh 说是比 bash 更强大,那我就用 zsh 吧。
查看当前电脑使用的是哪一个 shell,使用命令:
echo $SHELL
命令echo 的作用是:输出指定的字符串或者变量,这里就是输出变量 shell 的值, 一定要是大写,且要以$开头。还有类似的命令比如 echo $PATH,该命令的作用就是显示当前path环境变量。
切换 bash:
chsh -s /bin/bash
切换 zsh:
chsh -s /bin/zsh
zsh 环境变量配置文件:
vim ~/.zshrc
查看zsh环境变量:
cat ~/.zshrc(该命令只能在终端查看环境变量无法编辑)
bash环境变量配置文件:
vim ~/.bash_profile
or
open ~/.bash_profile