基于centOs7下appium环境搭建

贵有恒,何必三更起、五更眠、最无益,只怕一日曝、十日寒。这篇文章主要讲述基于centOs7下appium环境搭建相关的知识,希望能为你提供帮助。
事件背景:
前几日在群里看到关总说他的server端是搭建在linux环境下,包括对客户端与服务端的交互处理,感觉整体思路清晰可鉴,于是就想尝试,动手实践,接着从环境搭建开始搞起,于是就有了这篇文章,不得不吐槽下,这是段很深刻的回忆呀,历时1.5工作日,终于搞定环境搭建!!
依赖关联:
ps:以我现在的为例,个别根据自己情况调整

  • JDK 1.8
  • android SDK 1.0.40
  • nodejs 8.7
  • appium  1.9.1
一、安装jdk:
参考我之前写过的《ubuntu12.04 安装配置jdk1.7》
二、安装Android SDK:
1、下载sdk
cd /opt mkdir androidSdk wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip unzip sdk-tools-linux-3859397.zip

 
2、配置环境变量
sudo vim /etc/profile

#set sdk enviroment export ANDROID_HOME=/opt/androidSdk export PATH=$PATH:$ANDROID_HOME/tools/bin

保存退出,输入以下命令使之立即生效
source /etc/profile

 
3、查看已安装信息
基于centOs7下appium环境搭建

文章图片
sdkmanager --listInstalled packages: Path| Version | Description| Location -------| ------- | -------| ------- tools| 26.0.1 | Android SDK Tools 26.0.1| tools/Available Packages: Path| Version| Description -------| -------| ------- add-ons; addon-g..._apis-google-15 | 3| Google APIs add-ons; addon-g..._apis-google-16 | 4| Google APIs add-ons; addon-g..._apis-google-17 | 4| Google APIs add-ons; addon-g..._apis-google-18 | 4| Google APIs add-ons; addon-g..._apis-google-19 | 20| Google APIs add-ons; addon-g..._apis-google-21 | 1| Google APIs add-ons; addon-g..._apis-google-22 | 1| Google APIs add-ons; addon-g..._apis-google-23 | 1| Google APIs add-ons; addon-g..._apis-google-24 | 1| Google APIs add-ons; addon-g...e_gdk-google-19 | 11| Glass Development Kit Preview build-tools; 19.1.0| 19.1.0| Android SDK Build-Tools 19.1 build-tools; 20.0.0| 20.0.0| Android SDK Build-Tools 20 build-tools; 21.1.2| 21.1.2| Android SDK Build-Tools 21.1.2 build-tools; 22.0.1| 22.0.1| Android SDK Build-Tools 22.0.1 build-tools; 23.0.1| 23.0.1| Android SDK Build-Tools 23.0.1 build-tools; 23.0.2| 23.0.2| Android SDK Build-Tools 23.0.2 build-tools; 23.0.3| 23.0.3| Android SDK Build-Tools 23.0.3 build-tools; 24.0.0| 24.0.0| Android SDK Build-Tools 24 build-tools; 24.0.1| 24.0.1| Android SDK Build-Tools 24.0.1 build-tools; 24.0.2| 24.0.2| Android SDK Build-Tools 24.0.2 build-tools; 24.0.3| 24.0.3| Android SDK Build-Tools 24.0.3 build-tools; 25.0.0| 25.0.0| Android SDK Build-Tools 25 build-tools; 25.0.1| 25.0.1| Android SDK Build-Tools 25.0.1 build-tools; 25.0.2| 25.0.2| Android SDK Build-Tools 25.0.2 build-tools; 25.0.3| 25.0.3| Android SDK Build-Tools 25.0.3 build-tools; 26.0.0| 26.0.0| Android SDK Build-Tools 26 cmake; 3.6.4111459| 3.6.4111459 | CMake 3.6.4111459 docs| 1| Documentation for Android SDK emulator| 26.1.2| Android Emulator extras; android; gapid; 1| 1.0.3| GPU Debugging tools extras; android; gapid; 3| 3.1.0| GPU Debugging tools extras; android; m2repository| 47.0.0| Android Support Repository extras; google; auto| 1.1| Android Auto Desktop Head Unit... extras; google; g...e_play_services | 42| Google Play services extras; google; instantapps| 1.0.0| Instant Apps Development SDK extras; google; m2repository| 55| Google Repository extras; google; m...t_apk_expansion | 1| Google Play APK Expansion library extras; google; market_licensing| 1| Google Play Licensing Library extras; google; play_billing| 5| Google Play Billing Library extras; google; simulators| 1| Android Auto API Simulators extras; google; webdriver| 2| Google Web Driver extras; m2reposi...ut-solver; 1.0.0 | 1| Solver for ConstraintLayout 1.0.0 extras; m2reposi...er; 1.0.0-alpha2 | 1| com.android.support.constraint... extras; m2reposi...er; 1.0.0-alpha3 | 1| com.android.support.constraint... extras; m2reposi...er; 1.0.0-alpha4 | 1| com.android.support.constraint... extras; m2reposi...er; 1.0.0-alpha5 | 1| Solver for ConstraintLayout 1.... extras; m2reposi...er; 1.0.0-alpha6 | 1| Solver for ConstraintLayout 1.... extras; m2reposi...er; 1.0.0-alpha7 | 1| Solver for ConstraintLayout 1.... extras; m2reposi...er; 1.0.0-alpha8 | 1| Solver for ConstraintLayout 1.... extras; m2reposi...er; 1.0.0-alpha9 | 1| Solver for ConstraintLayout 1.... extras; m2reposi...ver; 1.0.0-beta1 | 1| Solver for ConstraintLayout 1.... extras; m2reposi...ver; 1.0.0-beta2 | 1| Solver for ConstraintLayout 1.... extras; m2reposi...ver; 1.0.0-beta3 | 1| Solver for ConstraintLayout 1.... extras; m2reposi...ver; 1.0.0-beta4 | 1| Solver for ConstraintLayout 1.... extras; m2reposi...ver; 1.0.0-beta5 | 1| Solver for ConstraintLayout 1.... extras; m2reposi...ut-solver; 1.0.1 | 1| Solver for ConstraintLayout 1.0.1 extras; m2reposi...ut-solver; 1.0.2 | 1| Solver for ConstraintLayout 1.0.2 extras; m2reposi...nt-layout; 1.0.0 | 1| ConstraintLayout for Android 1... extras; m2reposi...ut; 1.0.0-alpha2 | 1| com.android.support.constraint... extras; m2reposi...ut; 1.0.0-alpha3 | 1| com.android.support.constraint... extras; m2reposi...ut; 1.0.0-alpha4 | 1| com.android.support.constraint... extras; m2reposi...ut; 1.0.0-alpha5 | 1| ConstraintLayout for Android 1... extras; m2reposi...ut; 1.0.0-alpha6 | 1| ConstraintLayout for Android 1... extras; m2reposi...ut; 1.0.0-alpha7 | 1| ConstraintLayout for Android 1... extras; m2reposi...ut; 1.0.0-alpha8 | 1| ConstraintLayout for Android 1... extras; m2reposi...ut; 1.0.0-alpha9 | 1| ConstraintLayout for Android 1... extras; m2reposi...out; 1.0.0-beta1 | 1| ConstraintLayout for Android 1... extras; m2reposi...out; 1.0.0-beta2 | 1| ConstraintLayout for Android 1... extras; m2reposi...out; 1.0.0-beta3 | 1| ConstraintLayout for Android 1... extras; m2reposi...out; 1.0.0-beta4 | 1| ConstraintLayout for Android 1... extras; m2reposi...out; 1.0.0-beta5 | 1| ConstraintLayout for Android 1... extras; m2reposi...nt-layout; 1.0.1 | 1| ConstraintLayout for Android 1... extras; m2reposi...nt-layout; 1.0.2 | 1| ConstraintLayout for Android 1... lldb; 2.0| 2.0.2558144 | LLDB 2.0 lldb; 2.1| 2.1.2852477 | LLDB 2.1 lldb; 2.2| 2.2.3271982 | LLDB 2.2 lldb; 2.3| 2.3.3614996 | LLDB 2.3 ndk-bundle| 15.1.4119039 | NDK patcher; v4| 1| SDK Patch Applier v4 platform-tools| 26.0.0| Android SDK Platform-Tools platforms; android-10| 2| Android SDK Platform 10 platforms; android-11| 2| Android SDK Platform 11 platforms; android-12| 3| Android SDK Platform 12 platforms; android-13| 1| Android SDK Platform 13 platforms; android-14| 4| Android SDK Platform 14 platforms; android-15| 5| Android SDK Platform 15 platforms; android-16| 5| Android SDK Platform 16 platforms; android-17| 3| Android SDK Platform 17 platforms; android-18| 3| Android SDK Platform 18 platforms; android-19| 4| Android SDK Platform 19 platforms; android-20| 2| Android SDK Platform 20 platforms; android-21| 2| Android SDK Platform 21 platforms; android-22| 2| Android SDK Platform 22 platforms; android-23| 3| Android SDK Platform 23 platforms; android-24| 2| Android SDK Platform 24 platforms; android-25| 3| Android SDK Platform 25 platforms; android-26| 1| Android SDK Platform 26 platforms; android-7| 3| Android SDK Platform 7 platforms; android-8| 3| Android SDK Platform 8 platforms; android-9| 2| Android SDK Platform 9 sources; android-15| 2| Sources for Android 15 sources; android-16| 2| Sources for Android 16 sources; android-17| 1| Sources for Android 17 sources; android-18| 1| Sources for Android 18 sources; android-19| 2| Sources for Android 19 sources; android-20| 1| Sources for Android 20 sources; android-21| 1| Sources for Android 21 sources; android-22| 1| Sources for Android 22 sources; android-23| 1| Sources for Android 23 sources; android-24| 1| Sources for Android 24 sources; android-25| 1| Sources for Android 25 system-images; a...ult; armeabi-v7a | 4| ARM EABI v7a System Image system-images; a...-10; default; x86 | 4| Intel x86 Atom System Image system-images; a...pis; armeabi-v7a | 5| Google APIs ARM EABI v7a Syste... system-images; a...google_apis; x86 | 5| Google APIs Intel x86 Atom Sys... system-images; a...ult; armeabi-v7a | 2| ARM EABI v7a System Image system-images; a...ult; armeabi-v7a | 4| ARM EABI v7a System Image system-images; a...15; default; mips | 1| MIPS System Image system-images; a...-15; default; x86 | 4| Intel x86 Atom System Image system-images; a...pis; armeabi-v7a | 5| Google APIs ARM EABI v7a Syste... system-images; a...google_apis; x86 | 5| Google APIs Intel x86 Atom Sys... system-images; a...ult; armeabi-v7a | 4| ARM EABI v7a System Image system-images; a...16; default; mips | 1| MIPS System Image system-images; a...-16; default; x86 | 5| Intel x86 Atom System Image system-images; a...pis; armeabi-v7a | 5| Google APIs ARM EABI v7a Syste... system-images; a...google_apis; x86 | 5| Google APIs Intel x86 Atom Sys... system-images; a...ult; armeabi-v7a | 5| ARM EABI v7a System Image system-images; a...17; default; mips | 1| MIPS System Image system-images; a...-17; default; x86 | 3| Intel x86 Atom System Image system-images; a...pis; armeabi-v7a | 5| Google APIs ARM EABI v7a Syste... system-images; a...google_apis; x86 | 5| Google APIs Intel x86 Atom Sys... system-images; a...ult; armeabi-v7a | 4| ARM EABI v7a System Image system-images; a...-18; default; x86 | 3| Intel x86 Atom System Image system-images; a...pis; armeabi-v7a | 5| Google APIs ARM EABI v7a Syste... system-images; a...google_apis; x86 | 5| Google APIs Intel x86 Atom Sys... system-images; a...ult; armeabi-v7a | 5| ARM EABI v7a System Image system-images; a...-19; default; x86 | 5| Intel x86 Atom System Image system-images; a...pis; armeabi-v7a | 28| Google APIs ARM EABI v7a Syste... system-images; a...google_apis; x86 | 28| Google APIs Intel x86 Atom Sys... system-images; a...-tv; armeabi-v7a | 3| Android TV ARM EABI v7a System... system-images; a...; android-tv; x86 | 3| Android TV Intel x86 Atom Syst... system-images; a...ult; armeabi-v7a | 4| ARM EABI v7a System Image system-images; a...-21; default; x86 | 4| Intel x86 Atom System Image system-images; a...; default; x86_64 | 4| Intel x86 Atom_64 System Image system-images; a...pis; armeabi-v7a | 20| Google APIs ARM EABI v7a Syste... system-images; a...google_apis; x86 | 20| Google APIs Intel x86 Atom Sys... system-images; a...gle_apis; x86_64 | 20| Google APIs Intel x86 Atom_64 ... system-images; a...-tv; armeabi-v7a | 1| Android TV ARM EABI v7a System... system-images; a...; android-tv; x86 | 3| Android TV Intel x86 Atom Syst... system-images; a...ult; armeabi-v7a | 2| ARM EABI v7a System Image system-images; a...-22; default; x86 | 5| Intel x86 Atom System Image system-images; a...; default; x86_64 | 5| Intel x86 Atom_64 System Image system-images; a...pis; armeabi-v7a | 14| Google APIs ARM EABI v7a Syste... system-images; a...google_apis; x86 | 14| Google APIs Intel x86 Atom Sys... system-images; a...gle_apis; x86_64 | 14| Google APIs Intel x86 Atom_64 ... system-images; a...-tv; armeabi-v7a | 10| Android TV ARM EABI v7a System... system-images; a...; android-tv; x86 | 10| Android TV Intel x86 Atom Syst... system-images; a...ear; armeabi-v7a | 6| Android Wear ARM EABI v7a Syst... system-images; a...ndroid-wear; x86 | 6| Android Wear Intel x86 Atom Sy... system-images; a...-23; default; x86 | 9| Intel x86 Atom System Image system-images; a...; default; x86_64 | 9| Intel x86 Atom_64 System Image system-images; a...pis; armeabi-v7a | 21| Google APIs ARM EABI v7a Syste... system-images; a...google_apis; x86 | 21| Google APIs Intel x86 Atom Sys... system-images; a...gle_apis; x86_64 | 21| Google APIs Intel x86 Atom_64 ... system-images; a...; android-tv; x86 | 11| Android TV Intel x86 Atom Syst... system-images; a...fault; arm64-v8a | 7| ARM 64 v8a System Image system-images; a...ult; armeabi-v7a | 7| ARM EABI v7a System Image system-images; a...-24; default; x86 | 7| Intel x86 Atom System Image system-images; a...; default; x86_64 | 7| Intel x86 Atom_64 System Image system-images; a..._apis; arm64-v8a | 14| Google APIs ARM 64 v8a System ... system-images; a...pis; armeabi-v7a | 14| Google APIs ARM EABI v7a Syste... system-images; a...google_apis; x86 | 14| Google APIs Intel x86 Atom Sys... system-images; a...gle_apis; x86_64 | 14| Google APIs Intel x86 Atom_64 ... system-images; a...s_playstore; x86 | 13| Google Play Intel x86 Atom Sys... system-images; a...; android-tv; x86 | 5| Android TV Intel x86 Atom Syst... system-images; a...ear; armeabi-v7a | 3| Android Wear ARM EABI v7a Syst... system-images; a...ndroid-wear; x86 | 3| Android Wear Intel x86 Atom Sy... system-images; a..._apis; arm64-v8a | 6| Google APIs ARM 64 v8a System ... system-images; a...pis; armeabi-v7a | 6| Google APIs ARM EABI v7a Syste... system-images; a...google_apis; x86 | 6| Google APIs Intel x86 Atom Sys... system-images; a...gle_apis; x86_64 | 6| Google APIs Intel x86 Atom_64 ... system-images; a...; android-tv; x86 | 3| Android TV Intel x86 Atom Syst... system-images; a...ndroid-wear; x86 | 1| Android Wear Intel x86 Atom Sy... system-images; a...google_apis; x86 | 4| Google APIs Intel x86 Atom Sys... system-images; a...s_playstore; x86 | 4| Google Play Intel x86 Atom Sys... tools| 26.0.2| Android SDK ToolsAvailable Updates: ID| Installed | Available ------- | -------| ------- tools| 26.0.1| 26.0.2

基于centOs7下appium环境搭建

文章图片
 
4、安装需要的package,执行以下命令
sdkmanager "build-tools; 19.1.0"
sdkmanager "build-tools; 20.0.0"
sdkmanager "build-tools; 21.1.2"
sdkmanager "build-tools; 22.0.1"
sdkmanager "build-tools; 23.0.1"
sdkmanager "build-tools; 23.0.3"
sdkmanager "build-tools; 24.0.0"
sdkmanager "build-tools; 24.0.1"
sdkmanager "build-tools; 24.0.2"
sdkmanager "build-tools; 24.0.3"
sdkmanager "build-tools; 25.0.0"
sdkmanager "build-tools; 25.0.1"
sdkmanager "build-tools; 25.0.2"
sdkmanager "build-tools; 25.0.3"
sdkmanager "build-tools; 26.0.0"
sdkmanager "build-tools; 26.0.1"
sdkmanager "build-tools; 26.0.2"
sdkmanager "build-tools; 26.0.3"

sdkmanager "build-tools; 27.0.0"
sdkmanager "build-tools; 27.0.1"
sdkmanager "build-tools; 27.0.2"
sdkmanager "build-tools; 27.0.3"

sdkmanager "build-tools; 28.0.0"
sdkmanager "build-tools; 28.0.1"
sdkmanager "build-tools; 28.0.2"
sdkmanager "build-tools; 28.0.3"

sdkmanager "platform-tools"
sdkmanager "platforms; android-10"
sdkmanager "platforms; android-11"
sdkmanager "platforms; android-12"
sdkmanager "platforms; android-13"
sdkmanager "platforms; android-14"
sdkmanager "platforms; android-15"
sdkmanager "platforms; android-16"
sdkmanager "platforms; android-17"
sdkmanager "platforms; android-18"
sdkmanager "platforms; android-19"

sdkmanager "platforms; android-20"
sdkmanager "platforms; android-21"
sdkmanager "platforms; android-22"
sdkmanager "platforms; android-23"
sdkmanager "platforms; android-24"
sdkmanager "platforms; android-25"
sdkmanager "platforms; android-26"
sdkmanager "platforms; android-27"
sdkmanager "platforms; android-28"
 

可以先执行1行命令看一下是不是能正常运行
我执行了1个命令,出现了一个警告:Warning: File /root/.android/repositories.cfg could not be loaded. 
基于centOs7下appium环境搭建

文章图片

说是是在目录 /root/.android/ 下没有找到文件repositories.cfg
解决办法:
【基于centOs7下appium环境搭建】使用touch命令在根目录下新建1一个repositories.cfg文件就可以了
touch ~/.android/repositories.cfg

然后执行sdkmanager xxxx就没问题了。
执行完的效果:
在android-home目录下多了4个文件夹
基于centOs7下appium环境搭建

文章图片

5、配置platform tools
打开 /etc/profile 添加环境变量
基于centOs7下appium环境搭建

文章图片

执行以下命令,使配置文件生效
source /etc/profile

验证配置结
基于centOs7下appium环境搭建

文章图片

 
三、安装nodejs:
安装版本:8.7.0
1、从源码下载Nodejs
cd /usr/local/src wget https://npm.taobao.org/mirrors/node/v8.7.0/node-v8.7.0.tar.gz

 
2、解压缩 nodejs 安装包
tar xvf node-v8.7.0.tar.gz

 
3、进入解压的node文件夹,安装必要的编译软件包
cd node-v8.7.0
./configure

如提示gcc too old (英文那一大串我忘记了),大概意思让你升级ggc到4.90以上版本,因为nodejs8.7.0编译时gcc版本要求在4.9.4+。
升级gcc参考我另一篇Centos7升级gcc版本方法之一使用scl软件集
再次执行
./configure make

注:make过程较为耗时,可能需要30分钟以上
 
4、安装Nodejs
sudo make install

 
5、验证是否正确安装
node -v
基于centOs7下appium环境搭建

文章图片

四、安装appium:
方法一:
1、源码安装:
git clone https://github.com/appium/appium.git

 
2、进入appium源码文件夹,使用cnpm install安装依赖
cnpm install

如在安装期间执行到这卡住了,一直不走,
Downloading Selendroid standalone server version 0.17.0 from http://repo1.maven.org/maven2/io/selendroid/selendroid-standalone/0.17.0/selendroid-standalone-0.17.0-with-dependencies.jar --> /usr/local/lib/node_modules/appium/node_modules/_appium-selendroid-driver@1.6.4@appium-selendroid-driver/selendroid/download/selendroid-server-7cf7163ac47f1c46eff95b62f78b58c1dabdec534acc6632da3784739f6e9d82.jar

自行到maven仓库下载 上传到对应目录下, 重命名为存放的文件名即可
 
3、最后用appium -v试一下安装好的版本
基于centOs7下appium环境搭建

文章图片

  方法二:
1. 安装 cnpm
官网说用npm安装appium,我试了很久都不成功。因此先安装 cnpm, 再用 cnpm 安装appium等。
npm 与 cnpm 的关系,详见博客  https://blog.csdn.net/shelly1072/article/details/51524029
npm install -g cnpm  --registry=https://registry.npm.taobao.org
 
2. 安装 appium/appium-doctor
cnpm install -g appium
cnpm install -g appium-doctor
 
目前发现版本1.9.0有问题,可安装1.8.1:
cnpm install -g appium@1.8.1
 
设置 appium/appium-doctor 的软连接方式,方式同 1-2
 
3. 启动 appium
终端输入:appium 即可
 
4. 启动 appium-doctor
终端输入:appium 即可
appium-doctor 检查环境是否满足要求
基于centOs7下appium环境搭建

文章图片

 
五、appium desktop 安装:官网上下载对应版本    https://github.com/appium/appium-desktop/releases
linux 下载 appium-desktop-1.8.2-x86_64.AppImage
设置 appium/appium-doctor 的软连接方式,方式同 1-2 (或者export 文件对应的路径,alias 等)
终端输入 appium-desktop 启动 appium,start server
基于centOs7下appium环境搭建

文章图片

 
基于centOs7下appium环境搭建

文章图片

点击此处可启动 appium inspector,可支持 ios/Android 定位元素
 
基于centOs7下appium环境搭建

文章图片

 
 
 
六、客户端部署(以java为例)
1、pom添加依赖
< dependency> < groupId> io.appium< /groupId> < artifactId> java-client< /artifactId> < version> 5.0.0-BETA9< /version> < scope> test< /scope> < /dependency>

2、代码实例
package com.demo.test; import io.appium.java_client.android.AndroidDriver; import org.openqa.selenium.remote.DesiredCapabilities; import java.net.URL; /*** * @author longrong.lang * appium demo */ public class CalculatorTest {public static void main(String[] args) throws Exception { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("deviceName", "GALAXY S7"); //deviceID capabilities.setCapability("automationName", "Appium"); capabilities.setCapability("platformName", "Android"); //操作系统 capabilities.setCapability("platformVersion", "8.0.0"); //系统版本 capabilities.setCapability("appPackage", "cn.pear.browser"); //应用包名 capabilities.setCapability("appActivity", "cn.pear.browser.activities.WelcomeActivity"); //启动页面 AndroidDriver driver = new AndroidDriver(new URL("http://172.25.40.208:4723/wd/hub"), capabilities); //appium服务端连接 Thread.sleep(200000); driver.quit(); }}


    推荐阅读