centos7安装appium环境

  1. 前置准备

先要做的事情是升级一下系统(本人喜欢保持系统为最新,仁者见仁,智者见智)和准备一些基本工具,执行下列命令:

yum update && yum install -y git vim wget && yum groupinstall -y "Development tools"

完成后建议重启系统。

  1. pyenv

pyenv的安装我使用了别人做好的安装脚本,执行下面列出的命令即可:

curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash

网(fang)络(huo)不(chang)好(cheng)的朋友可以自行再curl上命令加上代理参数,安装完成后,根据安装提示需要手动加入相关的环境变量:

vim /etc/profile.d/pyenv.sh(创建一个这个文件只不过把环境变量独立起来了,也可以直接写在/etc/profile里面)

内容如下:

export PATH="/root/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

完成后重新登录或者执行source /etc/profile.d/pyenv.sh让环境变量生效,然后就可以愉快的使用命令了。

  1. Python

因为centos7自带了python2.7所以,这步可以忽略,但是得需要额外安装pip(以后用的上)。

 yum -y install python-pip

安装好pyenv以后就可以安装python了,安装python需要一些前置的库来编译python,安装命令如下:

yum install -y readline-devel openssl-devel bzip2-devel sqlite-devel

之后的安装就很简单了,只需要:

pyenv install 2.7.14
pyenv local 2.7.14 # 当前用户使用2.7.14版本
pyenv global 2.7.14 # 所有用户使用2.7.14版本,避免切换用户后python环境失效

网(fang)络(huo)不(chang)好(cheng)的朋友可以使用系统变量http_proxy和https_proxy来加快安装速度……

完成后重新登录或者执行source /etc/profile让设置生效,可以愉快的使用python和pip了。

  1. OpenCV

OpenCV要从源码编译安装,需要先安装Cmake,OpenCV又需要高一点版本的Cmake,CentOS自带的版本不够,所以Cmake也要从源码安装(我最不喜欢CentOS的一个地方)。

安装Cmake的命令:

wget http://www.cmake.org/files/v3.1/cmake-3.1.3.tar.gz
tar zxvf cmake-3.1.3.tar.gz
cd cmake-3.1.3
./configure --prefix=/usr/local/cmake-3.1.3
make && make install
ln -s /usr/local/cmake-3.1.3/bin/cmake /usr/local/bin/

完成后使用命令cmake –version就能看到cmake的版本了。

然后下载OpenCV的源码使用Cmake进行编译,命令如下:

wget https://github.com/opencv/opencv/archive/3.3.0.zip
unzip 3.3.0.zip
cd opencv-3.3.0
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=RELEASE
make && make install

安装完OpenCV得到一个opencv_version的命令,就可以打印OpenCV的版本号了。

  1. opencv-python

这是一个python的opencv封装库,安装前需要一些系统的X11运行库来支撑运行,安装过程:

yum install -y libSM libXrender libXext
pip install opencv-python

安装完成后,使用python -c “import cv2”可以检查是否正确安装了。

  1. JDK

当然centos7也是自带了java1.8.0版本

JDK安装了Oracle JDK,所以是直接从官网下载的,安装命令如下:

wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.rpm
rpm -ivh jdk-8u144-linux-x64.rpm

安装后使用命令java -version验证安装。

  1. Android SDK platform-tools

既然为Android自动测试机,ADB工具肯定是必须的啦,我直接使用了谷歌官方的sdk-tools来进行安装,命令如下:

wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip # 吐槽:居然没墙
unzip sdk-tools-linux-3859397.zip
mkdir -p /opt/android/sdk/
mv tools /opt/android/sdk/
cd /opt/android/sdk
touch ~/.android/repositories.cfg  #为什么要创建这个文件下面有说明
yes | ./tools/bin/sdkmanager --licenses
./tools/bin/sdkmanager "tools" "platform-tools"

在“./tools/bin/sdkmanager “tools” “platform-tools””这一步的时候可能会出现 Warning: File /root/.android/repositories.cfg could not be loaded.的错误,那么就需要创建 touch ~/.android/repositories.cfg

完成后向系统添加platform-tools的环境变量:

vim /etc/profile.d/android.sh
内容如下:

ANDROID_SDK_PATH="/opt/android/sdk"
export PATH="${ANDROID_SDK_PATH}/platform-tools/:${PATH}"

完成后重新登录或者执行source /etc/profile让环境变量生效,执行adb version验证安装情况。

  1. nvm

nvm前面也介绍过了,安装也很简单:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash

完成后重新登录或者执行source ~/.bashrc让环境变量生效,执行nvm –version验证安装情况。

  1. Node.js

有了nvm,安装Node.js再简单不过:

nvm install --lts # nvm会自动选择lts版本作为默认版本

如果你不是安装LTS版本,要多一个命令:

nvm install 8.7.0
nvm use 8.7.0 --default

完成后执行node - -version验证安装情况。

  1. Appium

到了最磨人的一个步骤了,由于众所周知的原因,npm安装总会遇到一些麻烦事,两个建议,第一个是使用国内源,第二个是使用proxy。我使用阿里的源进行安装,各种报错,不知道是阿里的问题还是遭遇了npm的bug(之前玩耍react的时候也遇到过,很尴尬……)。proxy会舒服些,但是npm似乎会搞很多个TCP连接,以至于我的代理服务器收到了too many connections的奇妙体验,很多次的失败和重试后,终于完成了,安装命令如下:

# proxy安装
npm install -g appium --proxy=http://yourproxy.com:port
# 淘宝源安装
npm install -g appium --registry=https://registry.npm.taobao.org

在安装的时候可能会出现下面这样的报错

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! appium-chromedriver@3.0.1 install: `node install-npm.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the appium-chromedriver@3.0.1 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2017-12-23T16_43_34_945Z-debug.log

那是因为appium在下载依赖程序appium-chromedriver时候被墙了,换成cnpm就可以了。

npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install -g appium --unsafe-perm

使用命令appium - -version可以验证安装情况。

借鉴https://oxygenengine.github.io/%E6%8A%80%E6%9C%AF/2017/10/18/install-auto-test-environment-on-centos-7/此人写的博客(写的非常详细),只不过根据我遇到的错误,添加了点内容

<think>首先,用户的问题是:“我想查找在docker中配置appium环境的方法 请问在docker中配置appium环境的详细步骤”。根据系统指令,我需要使用中文回答,并确保行内数学表达式用$...$,独立公式用$$...$$(虽然这里可能不涉及数学),但问题涉及技术步骤,所以重点在清晰、可靠地回答。 我看到的引用包括: - 引用[1]:docker-compose.yml配置,定义了spider和appium服务。 - 引用[2]:基于CentOS镜像搭建Appium环境。 - 引用[3]:容器搭建基本信息和优点。 - 引用[4]:Appium Docker的日志输出。 用户真正需求是“在docker中配置appium环境的方法”,所以我需要基于这些引用和其他知识,提供详细步骤。 系统指令要求: - 所有行内数学表达式格式正确(这里可能不适用)。 - 独立公式格式正确(不适用)。 - LaTeX语法正确(确保代码块正确)。 - 使用中文回答。 - 生成相关问题(在末尾添加“§§相关问题§§”)。 - 回答中引用的段落末尾添加引用标识,如[^1],但用户提供的引用是给定的,我需要引用这些参考。 用户说“上述引用仅供参考”,所以我应基于它们提供信息,但确保回答真实可靠。 结构化回答: 1. **介绍**:简要解释为什么在Docker中配置Appium环境。 2. **详细步骤**:分步骤描述如何在Docker中配置Appium环境。 - 包括使用Dockerfile或docker-compose.yml。 - 基于引用[1],有docker-compose.yml例子。 - 引用[2]提到基于CentOS镜像。 - 需要覆盖环境搭建、挂载卷、端口映射等。 3. **验证**:如何测试环境是否工作。 4. **注意事项**:如特权模式、USB设备挂载(引用[1]提到privileged: true和volumes)。 5. **结尾**:生成相关问题。 步骤大纲: 1. 准备Docker环境:确保Docker已安装。 2. 选择或创建Appium镜像:使用官方Appium/image或自定义镜像(如基于CentOS)。 - 引用[4]提到Appium Docker for Android。 - 引用[2]建议pull centos镜像。 3. 编写docker-compose.yml:定义服务,如引用[1]所示。 - 指定镜像(如appium/appium)。 - 设置端口(4723)。 - 设置特权模式。 - 挂载卷(如.android和/dev/bus/usb)。 4. 启动容器:使用docker-compose up。 5. 测试Appium环境运行测试脚本。 6. 可选:自定义镜像如果需要额外依赖。 确保回答清晰、逐步。 生成相关问题: - 类似示例的格式,列出2-3个相关问题。 - 例如: 1. 如何优化Appium在Docker中的性能? 2. 在Docker中配置Appium时常见的错误有哪些? 3. Appium Docker环境适用于哪些移动测试场景? 引用添加: - 当提到具体细节时,如挂载USB设备,添加引用标识[^1]。 完整回答结构: - 开头:介绍。 - 步骤:编号或项目符号。 - 代码块:对于docker-compose.yml,使用```格式。 - 结尾:相关问题。 </think>基于您的查询和提供的引用信息,我将详细解释在Docker中配置Appium环境的完整步骤。Appium是一个开源工具,用于自动化移动应用测试,支持Android和iOS。在Docker中配置Appium环境可以隔离依赖、简化部署,并确保环境一致性,特别适用于构建自动化测试流水线[^3]。以下步骤基于引用中的docker-compose.yml示例(引用[1])和CentOS镜像搭建方法(引用[2]),并结合最佳实践进行优化。我会确保步骤清晰可靠,适合Linux环境(如CentOS或Ubuntu)。 ### 在Docker中配置Appium环境的详细步骤 配置的核心是使用Docker Compose定义服务,包括Appium服务及其依赖。以下是分步指南,假设您已安装Docker和Docker Compose(最低版本:Docker 19.03+, Docker Compose 1.27+)。如果未安装,请先参考官方文档安装。 #### 步骤 1: 准备基础环境 - 确保主机系统(如CentOS或Ubuntu)已启用USB调试模式(针对Android真机测试)。 - 获取USB设备权限:在主机上运行 `lsusb` 命令查看设备ID,并确保 `~/.android/` 目录存在(存储ADB密钥)。 - 创建一个工作目录,用于存放配置文件和测试脚本: ```bash mkdir appium-docker && cd appium-docker ``` #### 步骤 2: 创建或获取Appium镜像 Appium有官方Docker镜像(如 `appium/appium`),您可以直接使用或基于CentOS自定义镜像(引用[2]建议)。推荐使用官方镜像以简化过程: - 拉取Appium官方镜像(支持Android): ```bash docker pull appium/appium:latest ``` 如果想基于CentOS自定义(例如添加额外工具),创建一个 `Dockerfile`: ```dockerfile # appium-docker/Dockerfile FROM centos:7 # 使用CentOS基础镜像(引用[2]) RUN yum update -y && \ yum install -y java-11-openjdk nodejs npm git && \ npm install -g appium # 安装Appium EXPOSE 4723 # Appium默认端口 ``` 然后构建镜像: ```bash docker build -t custom-appium:latest . ``` #### 步骤 3: 编写docker-compose.yml文件 使用Docker Compose定义Appium服务。以下是基于引用[1]的优化配置,确保支持Android真机测试: ```yaml # appium-docker/docker-compose.yml version: "3.8" # 使用较新版本以支持特性(引用[1]使用3.6) services: appium: image: appium/appium:latest # 官方镜像,或使用自定义镜像如 custom-appium:latest container_name: appium-container ports: - "4723:4723" # 映射主机端口4723到容器,用于Appium服务(引用[1][^4]) privileged: true # 必需,授予容器特权模式以访问USB设备(引用[1]) volumes: - ~/.android:/root/.android # 挂载Android配置文件(ADB密钥等) - /dev/bus/usb:/dev/bus/usb # 挂载USB设备,支持真机连接(引用[1][^2]) environment: - TZ=Asia/Shanghai # 可选:设置时区 - APPIUM_ARGS="--allow-insecure" # 可选:Appium启动参数 restart: unless-stopped # 容器退出时自动重启 # 可选:添加测试服务(如Python脚本),依赖Appium服务 test-script: image: python:3.9 # Python基础镜像 volumes: - ./appium_test.py:/code/appium_test.py # 挂载测试脚本 command: python /code/appium_test.py # 运行脚本(引用[1]) depends_on: - appium # 确保Appium先启动 ``` **关键说明**: - **privileged: true**:必须是true,否则容器无法访问USB设备(强制要求)。 - **volumes挂载**: - `~/.android:/root/.android`:共享主机ADB配置,避免重复授权。 - `/dev/bus/usb:/dev/bus/usb`:允许容器访问USB设备,适用于Android真机测试(引用[1][^2])。 - **ports映射**:端口4723是Appium默认端口,用于WebDriver通信(引用[4])。 - 如果您使用iOS测试,需要额外配置Xcode相关卷(此处以Android为主)。 #### 步骤 4: 启动Appium容器 - 在终端运行以下命令启动服务: ```bash docker-compose up -d # -d后台运行 ``` - 检查容器状态: ```bash docker-compose ps # 应显示appium-container为running docker logs appium-container # 查看日志,确认Appium启动成功(输出类似引用[4]的日志) ``` #### 步骤 5: 测试Appium环境 创建一个简单的测试脚本(如 `appium_test.py`)验证环境是否工作: ```python # appium-docker/appium_test.py from appium import webdriver desired_caps = { 'platformName': 'Android', 'deviceName': 'emulator-5554', # 或真机设备ID(通过 adb devices 获取) 'app': '/path/to/your/app.apk' # 替换为App路径 } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 连接到Appium driver.quit() print("Appium环境测试成功!") ``` - 运行测试: - 确保Android模拟器或真机已连接主机(使用 `adb devices` 验证)。 - 执行测试服务: ```bash docker-compose up test-script # 查看输出是否成功 ``` - **常见问题排查**: - **USB设备未识别**:确保主机USB权限正确(运行 `sudo chmod 777 /dev/bus/usb/*`),并重启容器。 - **Appium启动失败**:检查日志错误,常见于端口冲突或权限不足;尝试更新Appium镜像(`docker pull appium/appium:latest`)。 - **测试脚本错误**:确认Appium URL为 `http://appium:4723/wd/hub`(在容器内通信时使用服务名而非localhost)。 ### 注意事项 - **性能开销**:Docker容器开销低,适合沙箱环境(引用[3]),但确保主机资源充足(例如分配足够RAM)。 - **安全建议**:只在测试环境中使用 `privileged: true`;生产环境可改用 `--device` 参数限制设备访问。 - **扩展性**:如需iOS支持,使用 `appium/appium-xcuitest-driver` 镜像并挂载Xcode相关卷。 - 参考官方文档:[Appium Docker GitHub](https://github.com/appium/appium-docker) 和 [Docker教程](http://www.runoob.com/docker/docker-tutorial.html)(引用[3])。 通过以上步骤,您可以在Docker中高效部署Appium环境,实现移动测试自动化。如果您遇到具体问题,提供更多细节(如主机系统或错误日志),我可以进一步协助。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值