這篇文章主要是記錄自己在工作中遇到的問題,以備日后遇到同類問題后能夠快速解決。也希望這篇文章能對一些技術小白有一些幫助。講解如有不當之處還請指出,共同進步,在此感謝。
因國內不是太好下載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