写点什么

Appium 的安装及简单的使用介绍

用户头像
行者AI
关注
发布于: 2021 年 01 月 05 日

本文首发于:行者AI


Appium 是一个自动化开源工具,支持 iOS、Android 和 Windows 桌面平台上的原生、移动 Web 和混合应用的自动化。Appium 是跨平台的:它允许你用同样的 API 对多平台(iOS、Android、Windows)写测试。做到在 iOS、Android 和 Windows 测试套件之间复用代码。

1. 下载安装及环境配置

1.1 安装 python 安装 Appium-Python-Client 库


可以使用 pip 命令进行安装pip install Appium-Python-Client,安装完成后在 python 中运行此段代码from appium import webdriver校验是否安装成功 。

1.2 安装 Android SDK


(1)在官网上下载Android Studio,其中包含了 Android SDK,网页下拉到底部的 Command line tools only,下载其中的 windows 版本,下载完成后解压,CMD 命令行中 cd 到 bin 目录下,输入sdkmanager "platfrom-tools" "platforms;android-28" "build-tools;28.0.3"执行安装组件,过程中弹出 Accept?(y/N),输入 y 回车即可。



(2)组件安装完成之后,执行以下步骤将 Android SDK 加入到环境变量中。


  • 在系统环境变量中创建 ANDROIDHOME 变量,值为 SDK 安装的根目录路径,例如:E:\androidsdk

  • 将 %ANDROID_HOME%\platform-tools 加入到环境变量 Path 中

  • 验证设置成功否:CMD 命令行下输入adb version回车,可以看到当前 adb 的版本信息,说明 Android SDK 已经安装并配置成功

1.3 安装 JDK


(1)在oracle官网下载安装 JDK,安装 JDK8 及以上的版本。


(2)安装完成后,设置 JDK 的环境变量。


  • 在系统环境变量中创建 JAVAHOME 变量,值为 JDK 安装的跟目录路径,例如:C:\Program Files\Java\jdk1.8.0231

  • 在系统环境变量中创建 CLASSPATH 变量,值为 .;%JAVAHOME%\lib;%JAVAHOME%\lib\tools.jar

  • 在 Path 变量中添加 %JAVAHOME%\bin;%JAVAHOME%\jre\bin

  • 验证 JDK 环境配置是否成功,CMD 命令行下输入java -version回车,可以看到当前 JDK 的版本信息,说明 JDK 已经安装并配置成功

1.4 安装 appium server


(1)在 appium 官网上下载Appium Desktop进行安装,找到与自己使用的系统对应的版本,本次所有操作都是在 windows 上进行的。



(2)安装完成后,启动 appium,host 和 port 默认即可,在 Edit Configuration 中将 Android SDK 和 Java JDK 加到环境变量中。



(3)设置好后保存并重启 Appium,然后启动服务,出现以下画面,说明你的 appium server 已经正常启动了,可以开始真机测试了。


2. 真机测试

2.1 真机设置


USB 连接手机,打开手机开发者模式,打开开发者选项中的 USB 调试、USB 安装,小米手机还需要打开 USB 调试(安全设置),然后在 CMD 命令行输入adb devices回车,如果出现了手机的设备号,说明连接成功。


2.2 设置 Appium


(1)点击 Start Inspector Session 对进行 Desired Capabilities 的配置,在 JSON Representation 中输入以下 json 数据点击保存进行快速的配置,也可以在左边一项一项的添加。platformName、platformVersion、deviceName、appPackage、appActivity 这五个参数是必填项




{"platformName": "Android", # 声明是ios还是Android系统"platformVersion": "8.1.0", # Android内核版本号"deviceName": "MI_5X", # 连接的设备名称"appPackage": "com.tencent.qqmusic", # apk的包名"appActivity": ".activity.AppStarterActivity", # apk的launcherActivity"resetKeyboard": True,"noReset": True # 在开始会话之前不要重置应用程序状态}
复制代码


以上数据通过 adb 命令获取,获取 appPackage 与 appActivity 时需要将 app 启动,获取命令如下:



(2)配置好 Desired Capabilities 后,点击 Start Session,app 启动运行之后可以在界面上点击选择查看当前页面所有元素控件的详细信息,右侧 Selected Element 下方有三个按钮。


  • Tap:执行选中元素的点击操作

  • Send Keys:为文本框等 input 对象传值

  • Clear:清除输入框中的文本


2.3 编写自动化脚本


启动 session 成功运行 app 之后,点击你想要操作的元素,在右边可以看到这个元素的相关信息,这里我们可以通过 id 对该元素进行操作,在 python 中使用 findelementby_id()方法定位该元素,还有很多方法可以定位元素。


如:findelementby_xpath()、driver.find_elementbyname()、driver.findelementby_partial_link_text()等,使用 click()方法对元素进行点击操作,使用 swip()方法对屏幕进行滑动操作。



下面是 python 实现操作的源码展示,运行之后可以看到手机自动完成了启动 app、点击、滑动和退出的操作后,说明 python 脚本运行成功。需要注意的是在完成上一步操作之后由于手机性能的差异,app 的响应速度不同,建议等待几秒后再进行下一步操作。


import timefrom appium import webdriver

caps = {"platformName": "Android", # 声明是ios还是Android系统"platformVersion": "8.1.0", # Android内核版本号"deviceName": "MI_5X", # 连接的设备名称"appPackage": "com.tencent.qqmusic", # apk的包名"appActivity": ".activity.AppStarterActivity", # apk的launcherActivity"resetKeyboard": True,"noReset": True # 在开始会话之前不要重置应用程序状态}driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) # 启动apptime.sleep(15)el1 = driver.find_element_by_id("com.tencent.qqmusic:id/clt") # 定位<分类歌单>元素el1.click() # 点击time.sleep(5)driver.swipe(500, 1550, 500, 800) # 从(500, 1500)滑动到(500, 800)driver.quit() # 退出
复制代码

3. 总结


Appium 是目前比较成熟的自动化测试工具,使用了系统自带的自动化框架,不需要把 Appium 特定的或者第三方的代码编译进你的应用,这样就可以使用正式发布的包进行测试,不用担心测试包与正式包存在区别。同时可以结合 python 已有的测试框架,例如:pytest、unittest,编写测试用例,执行自动化测试。Appium 还有很多很有趣的功能没有介绍到,欢迎有疑问或者建议的朋友与我们一起探讨。



PS:更多技术干货,快关注【公众号 | xingzhe_ai】,与行者一起讨论吧!

发布于: 2021 年 01 月 05 日阅读数: 76
用户头像

行者AI

关注

行者AI,为游戏插上人工智能的翅膀。 2020.12.18 加入

行者AI(成都潜在人工智能科技有限公司)专注于人工智能在游戏领域的研究和应用,凭借自研算法,推出游戏AI、智能内容审核、数据平台等产品服务。

评论

发布
暂无评论
Appium的安装及简单的使用介绍