appium环境搭建

  • 操作系统: Windows 10
  • 被测平台: Android真机
  • appium服务器: appium Desktop
  • appium客户端: python-client
  • 测试的APP:小米计算器

安装Android SDK

在安装Android开发环境之前,需要先安装JAVA的开发环境!

Android SDK已经不再提供完整的独立下载,需要通过Android Studio安装:

Android Studio下载地址:https://developer.android.google.cn/studio

这里以windows版本为例,下载好了打开安装程序,记得勾选Android Virtual Device,然后选择安装路径并安装

首次启动Android Studio会弹出提示框,如图所示:

提示Android Studio没有检查到Android SDK,因为我们没有单独安装和配置Android SDK,所以单击“Cancel”按钮,继续安装。

勾选【Android SDK】 和【Android SDK Platform】选项,并通过【Android SDK Location】选择SDK的安装路径。

之后点击【Finish】开始下载安装SDK,整个过程比较漫长,需要等待一段时间。

安装完成后,就可以创建Android项目,因为用真机,所以在这就不讲模拟器的设置了。

配置Android 环境变量

在我的电脑右键菜单中选择【属性】→【高级系统设置】→【高级】→【环境变量】→【系统变量】下的【新建】按钮,添加ANDROID_HOME:

变量名: ANDROID_HOME

变量值: D:\Android\SDK # SDK的安装位置

单击【path】变量名,点击【编辑】按钮,追加如下配置:

%ANDROID_HOME%\platform-tools

%ANDROID_HOME%\tools

%ANDROID_HOME%\build-tools\29.0.3 # 后面的版本自己去目录看下,不要照抄

配置完成后在命令行输入命令adb,能正常执行就好了

安装appium Desktop

appium为c/s架构,Server主要用来监听我们的移动设备,接收Client(客户端)发来的JSON请求,解析后驱动移动设备运行测试脚本。

Github下载地址:https://github.com/appium/appium-desktop

进入网站后,找到标题Download Appium Desktop下,点击Release链接就可以看到各个版本的安装包了。

下载完了后进行傻瓜式安装就好了。

安装python的appium测试库

appium client支持多种编程语言,这里以python为例,通过pip命令安装:

pip install Appium-Python-Client

至此自动化测试环境就完成了。

测试准备和编写脚本

开发者模式

首先USB手机连接电脑,手机进入开发者模式(不同品牌手机操作方法不同),在开发者选项中开启USB调试。

在windows命令行中使用adb devices 查看设备连接情况,在List of devices attached下能看到一个实例ID说明监听成功:

此时windows命令行输入adb install D:\com.miui.calculator.apk可以安装小米计算器APP

注意APK的所在路径和文件名

appium Desktop

打开appium客户端,点击【start server】启动appium server:

菜单栏选择【File】下的【New Session Window】进行配置:

如何获取app的appPackage名和appActivity名?

打开windows命令行,输入命令aapt dump badging D:/com.miui.calculator.apk可以获取到,如下图所示



JSON配置信息:

  1. {
  2. "platformName": "Android", # 测试的平台,安卓或者ios
  3. "platformVersion": "10", # 系统版本,此处代表安卓10
  4. "deviceName": "OnePlus 7 pro", # 设备名称,填手机型号就行,随便填也可
  5. "app": "D:/com.miui.calculator.apk", # app的安装包的位置
  6. "appPackage": "com.miui.calculator", # app的包名
  7. "appActivity": "com.miui.calculator.cal.CalculatorActivity" # app的activity名
  8. }

简单配置完成后,点击右下角的【start session】

可以看到测试机打开了小米计算器

元素定位

如图,可以看到进入小米计算器的APP画面,并且出现了权限设置的问题。

这些权限按钮什么的都是可以定位到的,现在在appium手机画面预览中点击【同意】按钮,右边会出现元素的各种属性。

可以看到id和xpath定位等,这个操作跟selenium定位一样,优先使用id就好,没有id就使用其他定位方式。

这时候在测试机上点击【同意】按钮,测试机进入了小米计算器,此时appium的画面还没有变,因为需要点击上面的【refresh】按钮来实时获取手机的画面,然后根据需求找出各个按钮的定位就可以编写测试脚本了。

编写脚本

现在来写一个简单的脚本操作一下小米计算器,计算5×9=45是否正确:

  1. from appium import webdriver
  2. from time import sleep
  3. # 配置信息,字典类型,直接复用上面的json就好
  4. desired_caps = {
  5. "platformName": "Android",
  6. "platformVersion": "10",
  7. "deviceName": "OnePlus 7 pro",
  8. "app": "D:/com.miui.calculator.apk",
  9. "appPackage": "com.miui.calculator",
  10. "appActivity": "com.miui.calculator.cal.CalculatorActivity"
  11. }
  12. # 传入appium server的host+path,还有配置信息
  13. driver = webdriver.Remote(command_executor='http://localhost:4723/wd/hub',
  14. desired_capabilities=desired_caps)
  15. sleep(3)
  16. # 同意读取手机状态和身份
  17. driver.find_element_by_id('android:id/button1').click()
  18. # 同意获取电话权限
  19. driver.find_element_by_id('com.android.permissioncontroller:id/permission_allow_button').click()
  20. # 点击5
  21. driver.find_element_by_id('com.miui.calculator:id/btn_5_s').click()
  22. # 点击乘号
  23. driver.find_element_by_id('com.miui.calculator:id/btn_mul_s').click()
  24. # 点击9
  25. driver.find_element_by_id('com.miui.calculator:id/btn_9_s').click()
  26. # 点击等号
  27. driver.find_element_by_id('com.miui.calculator:id/btn_equal_s').click()
  28. # 判断结果是否等于45
  29. result = driver.find_element_by_id('com.miui.calculator:id/result').text
  30. if result == '= 45':
  31. print('正确')
  32. else:
  33. print('错误')
  34. sleep(3)
  35. # 退出测试
  36. driver.quit()

运行脚本的效果:

python+appium+真机测试的更多相关文章

  1. appium 真机测试问题 出现 instruments crashed on startup

    1.appium 真机测试的时候 instruments crashed on startup,必须在真机上打开UI Automation 在设置里: Developer->Enable UI ...

  2. Appium +Python 连接真机测试

    1.数据线连接电脑和手机: 2.用adb获取手机的UUID:cmd-> adb devices 前面的就是你手机的UUID 3.打开appium,选择手机的安卓版本(关于手机中查看),填写手机的 ...

  3. appium+python自动化测试真机测试时报错“info: [debug] Error: Could not extract PIDs from ps output. PIDS: [], Procs: ["bad pid 'uiautomator'"]”

    刚开始启动服务时,弹出授权提示,以为是手机app权限问题,后来debug后,发现了一个警告日志:UiAutomator did not shut down fast enough, calling i ...

  4. python+appium真机运行登录例子

    一.手机USB连接电脑(手机打开调试模式) 验证:cmd -> 输入adb devices,查看手机的UDID.显示如下表示 连接成功 二.启动Appium服务 1. 启动Appium,点击 右 ...

  5. iOS系列 基础篇 01 构建HelloWorld,剖析并真机测试

    iOS基础 01 构建HelloWorld,剖析并真机测试 前言: 从控制台输出HelloWorld是我们学习各种语言的第一步,也是我们人生中非常重要的一步. 多年之后,我希望我们仍能怀有学习上进的心 ...

  6. 解决Xcode真机测试时ineligible devices的问题

    升级了Xcode到6.3,连接真机测试时,出现不能选择设备.如图: 设备系统版本是8.3的,Xcode连接其他低系统版本的设备做真机测试时就不会有这个问题. 有人说这是Xcode6.3的bug. 我的 ...

  7. iOS—Xcode 7真机测试

    Xcode 7真机测试详解 1.准备 注意:一定要让你的真机设备的系统版本和app的系统版本想对应,如果不对应就会出现一个很常见的问题:could not find developer disk im ...

  8. iOS 真机测试 App installation failed

    真机测试的过程中,出现这种Bug This application's application-identifier entitlement does not match that of the in ...

  9. Xcode真机测试could not find developer disk image解决方法

    原文地址:http://my.oschina.net/u/2340880/blog/521700 Xcode真机测试could not find developer disk image解决方法 在使 ...

随机推荐

  1. sqlserver 分页模糊查询

       积少成多 ----  仅以此致敬和我一样在慢慢前进的人儿 问题: 在sqlserver 进行模糊查询,出现问题 最初使用“concat”,进行拼串操作,如下所示: <select id = ...

  2. HDFS NameNode重启优化

    http://tech.meituan.com/namenode-restart-optimization.html 一.背景 在Hadoop集群整个生命周期里,由于调整参数.Patch.升级等多种场 ...

  3. SpringBoot缓存篇Ⅰ--- 缓存抽象

    缓存是每一个系统应该考虑的功能,它可以用来加速系统的访问,提升系统性能,例如要经常访问的高频热点数据,例如某一个商品网站的商品信息,商品信息存储在数据库中,若每次访问都要查询数据库的话,这样的操作耗时 ...

  4. SpringMVC进阶(二)

    一.高级参数绑定 1.1. 绑定数组 Controller方法中可以用String[]接收,或者pojo的String[]属性接收.两种方式任选其一即可. /** * 包装类型 绑定数组类型,可以使用 ...

  5. (六)mybatis拦截器

    首先拦截器可以拦截mybatis四大核心对象:StatementHandler,ParameterHandler,ResultSetHandler,Executor,具体拦截时根据需求拦截一部分方法 ...

  6. 用MYSQL的存储过程创建百万级测试数据表

    创建随机字符串函数,便于创建名称 DROP function if EXISTS rand_string; #创建一个指定字符个数的函数 create function rand_string(n I ...

  7. LeetCode29 Medium 不用除号实现快速除法

    本文始发于个人公众号:TechFlow,原创不易,求个关注 链接 Divide Two Integers 难度 Medium 描述 给定两个整数,被除数和除数,要求在不使用除号的情况下计算出两数的商 ...

  8. 推荐算法之因子分解机(FM)

    在这篇文章我们将介绍因式分解机模型(FM),为行文方便后文均以FM表示.FM模型结合了支持向量机与因子分解模型的优点,并且能够用了回归.二分类以及排序任务,速度快,是推荐算法中召回与排序的利器.FM算 ...

  9. Linux 查看CPU、内存、机器型号等硬件信息

    # 查看CPU信息 #查看CPU信息(型号) [root@localhost ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 32 ...

  10. linux shell实用常用命令

    本文主要介绍Linux Shell的一些使用小技巧收集,非常实用,需要的朋友可以参考下. 查看本机某端口是否被占用 netstat -anpt | grep 22 查看远程某端口是否被开放 echo ...