安装Appium Python Client 包

根据原理图, 我们知道测试程序需要调用客户端的库Appium Python Client包来和 Appium Server 进行通信。

所以先安装Appium Python Client包。

https://github.com/appium/python-client

pip install Appium-Python-Client

从安装的信息可以发现,Appium Client 底层是依赖 Selenium的,它需要Selenium库的代码才能实现和 Appium Server进行通信

Appium Server

更省事的方法是下载安装Appium Desktop的安装包,

这个里面包含了Node.js和AppiumServer 的代码

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

它是个windows的安装程序,只需要下载,安装就可以了,没有什么难度。

安装 Android sdk

对于安卓app的自动化,Appium Server 依赖 Android SDK。

因为要用到里面的一些工具,

典型的,最常用的,比如adb,要执行命令设置手机,传送文件,安装应用。

我们怎么安装Android sdk包?

谷歌是提供了方法: 不去安装 android studio ,就只安装 sdk包的

打开 https://developer.android.google.cn/studio/

最下面有个

建议先创建一个类似这样的目录

d:\android\sdk

下载后,选择解压到当前目录

会生成一个 tools 目录

然后

sdkmanager "platform-tools" "platforms;android-28" "build-tools;28.0.3"

设置 sdk 相关环境变量

配置一下  ANDROID_HOME 环境变量的值为 d:\tools\Android\sdk

将adb所在路径设置到 path环境变量中

Android\sdk\platform-tools\

安装JDK

有些 安卓sdk 中的工具(比如查看安卓app界面元素的uiautomatorviewer)需要有JDK才能运行。

比较简单,

但是大家要注意的是,一定要安装jdk 8.x的版本,

1.7 ,1.6 1.9等版本都碰到过这样那样的问题。

jdk 是oracle的,到官网下载

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

下载安装就可以

有时还需要环境变量中设置一下(有人的环境上需要,建议大家都添加一下)

JAVA_HOME   d:\tools\java\jdk1.8.0_121

连接真实设备(15 min)

  1. 用usb线(有的淘宝线只能充电)连接到电脑,一头连手机,一头连电脑
  2. 进入手机设置,关于手机(),不断点击版本号(7次以上),

注意一定是版本号,不是其他号。

  1. 退出到上级菜单,在开发者模式中,启动usb调试 ,这样appium才能驱动手机
  1. 在电脑上 执行adb命令(这个adb在sdk\platform-tools\   请大家设置路径在path环境变量中)

adb devices -l

List of devices attached

4d0035dc767a50bb        device product:t03gxx model:GT_N7100 device:t03g

现在有的电脑安装了win10的,有的手机能够自动被系统识别,就会显示上面的信息,

有的电脑系统,比如win7 , 手机不能自动识别,因为还没有安装手机的usb驱动,需要我们去安装。

到哪里下载驱动呢? 可以通过 官方windows手机管理软件, 比如华为手机(安装华为手机助手)

快速开始

我们以一个开发者头条的app,为例,演示一下自动化的过程

准备一些事情

即使安装好上述软件后。要自动化,还要准备一些事情。

首先当然需要有被测试的app应用了。

这里我用的app是从应用市场上下载下来。

在虚拟手机上没有应用市场,可以直接到官网下载app

https://toutiao.io/

当然实际项目中app 是有开发团队发布给我们测试用的。

放在一个合适的目录中,这里我放在 d:\apk\

usb线连接手机

进入头条apk所在目录,

执行命令安装一下

d:\apk> adb install -r toutiao.apk

toutiao.apk: 1 file pushed. 4.5 MB/s (15351740 bytes in 3.268s)

pkg: /data/local/tmp/toutiao.apk

Success

范例代码

from appium import webdriver
import time,traceback

# 这里定义的 desired_capabilities作为下面 webdriver.Remote
# 初始化一个webdriver的参数。
# 这些键值对告诉appium server 测试程序希望进行的是什么什么样的测试
# 比如下面 platformName   platformVersion 两个配置项
desired_caps = {}
desired_caps['platformName'] = 'Android'  #测试平台,不能写错
desired_caps['platformVersion'] = '6.0'   #平台版本,不能写错
#设备名称,其实没有太大的用处,只是给测试程序使用的,苹果手机一定要有
desired_caps['deviceName'] = 'test'
#apk 文件路径名,如果设备还没有此应用,则会安装。 什么是apk文件?

# android application package 安卓移动App安装包
desired_caps['app'] = r'd:\apk\toutiao.apk'
#app package名,一定要有,是开发者给app取的名字,可以唯一标识这个app # 安卓上运行某个app,不是根据它的路径而是appid ,也就是这package name
# 怎么获取?后面会讲
desired_caps['appPackage'] = 'io.manong.developerdaily'
# app默认Activity,也是必须的参数。Activity 的概念后面会讲述,
# 目前我们就理解为一个用户操作界面就可以了
# 怎么获取?后面会讲
desired_caps['appActivity'] = 'io.toutiao.android.ui.activity.LaunchActivity'
# 一定要有该参数,否则测试过程中无法输入中文
#加上这个参数会新加一种unicode输入法
desired_caps['unicodeKeyboard']  = True
# 保证了app 测试前不会清除应用数据,缺省是会清除数据的,
desired_caps['noReset'] = True
# appium server 认为 和客户端之间 无响应最大时间超过这个时间就会停止服务
desired_caps['newCommandTimeout'] = 6000
# appium server 在这个URI上接收 客户端发送的rest API请求
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

# 下面的操作是自动化一个用户登录的过程,大家课后自己尝试的时候,需要先注册用户
# 怎么注册演示给大家看看, 怎么登录也演示给大家看看,
# 最后别忘了要退出登录,一遍自动化可以执行
try:
    # Selenium含义一样,问问大家还记得吗?
    driver.implicitly_wait(10)

# 根据id找到元素,并点击,id html 元素的id不同,

# 和appiumserver设备之间的消息流程类似于 selenium,和
    driver.find_element_by_id("io.manong.developerdaily:id/tab_bar_plus").click()
    time.sleep(1)
    driver.find_element_by_id("io.manong.developerdaily:id/btn_email").click()
    time.sleep(1)

# 输入用户名、密码
    ele = driver.find_element_by_id("io.manong.developerdaily:id/edt_email")
    ele.send_keys('jcyrss@163.com')
    ele = driver.find_element_by_id("io.manong.developerdaily:id/edt_password")
    ele.send_keys('sdfsdf')

time.sleep(2)
    # 点击登录
    driver.find_element_by_id('io.manong.developerdaily:id/btn_login').click()
    pass

except:
    print (traceback.format_exc())

input('**** Press to quit..')
driver.quit()

手机自动化安装、配置详解相关推荐

  1. 硬实时RTLinux安装配置详解 (一):准备工作

    更多技术干货,欢迎扫码关注博主微信公众号:HowieXue,一起学习探讨软硬件技术知识经验,关注就有海量学习资料免费领哦: 硬实时RTlinux系统配置 1. Linux内核下载 2. 下载与Linu ...

  2. 硬实时RTLinux安装配置详解 (二):编译运行RTLinux

    硬实时RTlinux系统配置 4. 配置RTLinux 4.1 配置Patch 4.2 配置RTLinux内核 4.3. 编译Rtlinux内核 4.4 制作initramfs启动引导: 5. 大功告 ...

  3. zabbix安装配置详解(一)

    zabbix安装配置详解(一) 一.nginx安装 1.必要软件准备: 为了支持rewrite功能,我们需要安装pcre: #yum install pcre-* 需要ssl的支持,如果不需要ssl支 ...

  4. lvs keepalived 安装配置详解【转】

    lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...

  5. redis cluster 集群 安装 配置 详解

    redis cluster 集群 安装 配置 详解 张映 发表于 2015-05-01 分类目录: nosql 标签:cluster, redis, 安装, 配置, 集群 Redis 集群是一个提供在 ...

  6. Python3 环境搭建、pycharm安装配置详解、新建Python项目(新手小白版Windows系统)

    Python3 环境搭建 .pycharm安装配置详解 window系统上环境搭建: 一.环境搭建,下载Python (Python 3.8为例) 二.pycharm的下载与安装 window系统上环 ...

  7. 使用LVS实现负载均衡原理及安装配置详解

    使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均 ...

  8. 深入分析redis cluster 集群安装配置详解

    Redis 集群是一个提供在多个Redis间节点间共享数据的程序集.redis3.0以前,只支持主从同步的,如果主的挂了,写入就成问题了.3.0出来后就可以很好帮我们解决这个问题. 目前redis 3 ...

  9. Burp Suite安装配置详解(附Java 环境安装)

    Burp Suite安装配置详解 1.Java 安装与环境配置详解 1.0 下载Java SDK 1.8 最新版 2.0 配置Java 环境变量 2.Burp Suite 安装详解 2.0 下载Bur ...

  10. Linux安装消息队列IBM MQ 7.5开发版安装配置详解

    消息队列IBM MQ 7.5开发版安装配置详解 文章目录 消息队列IBM MQ 7.5开发版安装配置详解 前言 一.什么是IBM MQ? 二.安装前准备 1.安装前准备 2.安装MQ Server 3 ...

最新文章

  1. 【机器学习】基于蚁群算法的多元非线性函数极值寻优
  2. html json 访问工程,SpringBoot:Web项目中如何优雅的同时处理Json和Html请求的异常...
  3. JS break语句和continue语句
  4. 关于全国大学生智能汽车竞赛 参赛队员信息的情况说明
  5. C语言自学《四》---- 循 环
  6. java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)
  7. 联想微型计算机电脑黑屏怎么做系统,联想电脑黑屏怎么办,5种方法轻松排除黑屏故障...
  8. php strchr 截断,PHP strchr() 函数
  9. Magento 获取当前货币和货币符How to get current currency in Magento
  10. 24点游戏c语言程序代码,C语言实现24点游戏源代码
  11. [Python2] List-comprehensions 列表推导式
  12. ASP.NET AJAX入门系列(6):UpdateProgress控件简单介绍
  13. GCC Command Options
  14. 关于数据库的一些基本操作语句
  15. [BZOJ]1042 硬币购物(HAOI2008)
  16. Aatcc加速器市场现状及未来发展趋势
  17. python可以作为源文件后缀名的是_python 后缀名
  18. 刀片机服务器的虚拟化,刀片机服务器虚拟化
  19. qt 设置进程优先级_如何设置最低优先级的进程?
  20. 你什么时候放下,什么时候就没有烦恼。

热门文章

  1. 借款与收款不是同一人,怎么认定借款人是谁?
  2. CentOS安装DolphinScheduler
  3. Java随机生成6位正整数
  4. 快速掌握差分进化算法
  5. 对批改网的fuzz测试
  6. java在线考试系统源码下载_Java在线考试系统 SpringMVC实现 源码下载
  7. 2022-2028年中国橱柜拉篮行业市场调查研究及发展前景规划报告
  8. spring操作transactionManager
  9. Java的日期与时间java.time.Duration的简介说明
  10. 信息化助力企业合同风险的法律与财务联防联控