手机自动化安装、配置详解

安装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()

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值