STF stf-如何通过 appium 连接远程真机实现自动化

sandy · 2018年06月22日 · 最后由 linson1228 回复于 2019年07月30日 · 3956 次阅读

如何通过 appium 控制 stf 里面的设备呢?本篇文档将详细介绍

一、环境配置
1.安装 Node.js
下载地址:https://nodejs.org/
根据对应操作系统版本下载,比如:Windows installer(.msi) 64-bit 版本进行下载,直接下一步下一步即可。安装过程中把环境变量添加到 path 路径中

2.安装 Appium
下载地址:https://bitbucket.org/appium/appium.app/downloads/
我们可以在 Appium 官方网站上下载操作系统相应的 Appium 版本,如选择 AppiumForWindows_1_4_16_1.zip,直接下一步下一步即可。
安装好后,需要配置 appium 环境变量,把 C:\Program Files (x86)\Appium\node_modules.bin 添加到 path 路径中

3.安装 JDK 并配置环境变量
系统变量→新建 JAVA_HOME 变量
变量名:JAVA_HOME
变量值:C:\jdk1.8.0_73
系统变量→新建 CLASSPATH
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
系统变量→寻找 Path 变量→编辑
在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

4.安装 android adt & SDK
下载好 Android ADT 或 SDK 后,并配置 Android 环境变量
系统变量→新建 ANDROID_HOME 变量(把 SDK 路径添加到环境变量里)
变量名:ANDROID_HOME
变量值:C:\tool\Andriod_SDK
系统变量→寻找 Path 变量→编辑
在变量值最后输入 %ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;

5.安装 Appium Client
Appium Client 是对 webdriver 原生 api 的一些扩展和封装。它可以帮助我们更容易的写出用例,写出更好懂的用例。
Appium Client 是配合原生的 webdriver 来使用的,因此二者必须配合使用缺一不可。

在 cmd 下,输入命令:pip install Appium-Python-Client

二、验证是否安装成功
打开 Windows 命令提示符,通过 “appium-doctor” 命令检查 appium 环境。
如果提示:All Checks were successful,则安装无误

三、编写 appium 自动化脚本
1.登录进入到 stf 页面后,在真机调试界面,有一个瓢虫一样的图标,复制 adb connect xxxx 命令

2.打开 cmd,运行上面复制到的命令。

再打开另外一个终端,输入 adb devices,可以看到设备列表,说明连接成功。

3.开启 appium-server 服务后,运行以下脚本(这里使用的是 java 编写的自动化测试脚本)

运行后,可能会遇到以下错误:

解决方案如下,修改 Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js 文件,添加代码:outlines.shift(),如下图所示。

修改完成后,重启 appium 服务,再次运行自动化测试脚本,如果发现 stf 中的远程机器已经开始在跑,且在控制台可以看到打印出以下信息,则说明正常。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 2 条回复 时间 点赞

你好!问下这边做过脚本管理,有好的 java appium 框架吗?

你好,想问一下安装 STF 是否只能用 node v8.9.1 + npm 6.0.0,我 NPM 6.0,node 12.4 安装失败。部分错误代码

============

In file included from ../src/bufferutil.cc:16:
In file included from ../../_nan@2.4.0@nan/nan.h:190:
../../_nan@2.4.0@nan/nan_maybe_43_inl.h:88:15: error: no member named 'ForceSet' in 'v8::Object'
return obj->ForceSet(GetCurrentContext(), key, value, attribs);
~~~ ^
In file included from ../src/bufferutil.cc:16:
In file included from ../../_nan@2.4.0@nan/nan.h:195:
In file included from ../../_nan@2.4.0@nan/nan_converters.h:59:
../../_nan@2.4.0@nan/nan_converters_43_inl.h:18:1: warning: 'ToBoolean' is deprecated: ToBoolean can never throw. Use Local version. [-Wdeprecated-declarations]
X(Boolean)
^
../../_nan@2.4.0@nan/nan_converters_43_inl.h:15:15: note: expanded from macro 'X'
return val->To ## TYPE(GetCurrentContext()); \
^
:270:1: note: expanded from here
ToBoolean

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册