目录
1.5安装python插件:Appium-Python-Client
4.参数platformName和platformVersion的获取:
一、开始前的准备:
在开始这篇文章之前,您需要做好以下几个准备:
1.1安装:jdk 就是java环境
1.2安装:Android_Statio(SDK)
1.3安装:nodejs
1.4安装:python+pycharm
1.5安装python插件:Appium-Python-Client
以上可选择性参考下面这两篇文章:
https://blog.csdn.net/test_number1/article/details/121754944?spm=1001.2014.3001.5506
https://blog.csdn.net/u013302168/article/details/122475805?spm=1001.2014.3001.5506
1.6安装/准备:手机(模拟器)
1.6.1选择你的安卓手机或安装你心仪的模拟器
1.6.2设置手机或模拟器:
A.打开开发者选项
B.打开允许USB调试
C.打开坐标设置
1.7安装:adb
(1)adb下载地址:
Windows版本下载:
https://dl.google.com/android/repository/platform-tools-latest-windows.zip
Mac版本下载:
https://dl.google.com/android/repository/platform-tools-latest-darwin.zip
Linux版本下载:
https://dl.google.com/android/repository/platform-tools-latest-linux.zip
(2)adb的环境变量配置及验证:
2.1配置环境变量:高级->环境变量->系统变量->path->添加adb的路径【要到adb/planform_tools】>保存保存保存
2.2验证:doc窗口:win+r---->adb --version------>看到adb对应的版本号就成功了。反之请重新检查
(3)adb连接手机(模拟器):
3.1.打开手机:夜神模拟器为例(并保证相关设置已打开)
3.2.打开窗口:win+r
3.3.连接设备:adb connect 127.0.0.1:62001------>回车【这里使用的是夜神模拟器】
3.4.查看连接状态:adb devices-----List of devices attached表示连接成功了,反之就是失败,请重新检查相关是否正常。
3.5断开连接:adb kill-server---->回车
正文开始啦
二、什么是Appium ?
appium是一个移动端自动化框架,它采用C/S的设计模式,支持多类开发语言(java python js c#…)、支持多平台(ios android),支持跨平台使用(windows linux)。它适用于原生或混合移动应用;
appium继承了webDriver协议(也就是继承了selenium 2),在其基础上做了扩展,使用JSON wire protocol协议驱动安卓和ios移动应用;
废话总结:Appium继承了selenium 2,适用于多种语言。
三、安装Appium:
1.下载:https://github.com/appium/appium-desktop/releases/tag/v1.22.2
2.解压:存放于自己喜欢的目录【建议新建一个目录】,最好D盘哈,为什么自己想。
3.打开:进入解压后的目录,双击打开 Appium Server GUI.exe
四、Appium连接手机(模拟器):
1.打开模拟器:
打开手机或模拟器
2.打开appium:
打开界面如下,直接点击Start Server
再点击搜索放大镜:
3.进入连接手机参数设置界面
【如下】
连接手机(模拟器)时需要在这里填写几个正确的参数
几个重要的参数【有很多、一般这几个就ok】:
key | 含义 |
appPackage | app包名 |
appActivity | 启动app的activity |
deviceName | 设备名称,手机(模拟器)ip+端口,如夜神模拟器127.0.0.1:62001 |
platformName | 设备类型,Android |
platformVersion | 设备版本,进入手机或模拟器中查看版本,如:7.1.2 |
4.参数的获取:
(1)adb连接上手机模拟器:
-----参考上面的:一、1.7(3)
(2)获取appPackage:
输入:
adb shell pm list package -3
adb shell pm list package -3 | 展示第三方安装包名 |
adb shell pm list package -s | 展示系统自带的安装包 |
如下 就是第三方的包名,也就是对应的 appPackage,比如是: appPackage=com.zzly99.wnl
(3)获取appActivity:
接着上面的操作,得到了包名:com.zzly99.wnl,当然这里你可以直接问开发要包的appActivity。但是我们也可以自己查询到:
输入命令:adb shell monkey -p 包名 -v -v -v 1
adb shell monkey -p com.zzly99.wnl -v -v -v 1
得到如下信息:+一行和:Switch:一行都可以找到对应的appActivity
appActivity=com.zzly99.wnl.ui.Welcome
【小提醒:两个地方不同的是:后一个appActivity多了一个"/",如果复制后面的记得要去掉"/",复制前面的一般没有问题】
查询完成后记得断开adb与手机的连接:adb kill-server
4.参数platformName和platformVersion的获取:
在手机中的“关于手机”中可以查看到信息【如下】:
platformName=Android
platformVersion=7.1.2
5.填写参数并连接设备:
如下,填写了如上的几个参数后,点击连接
[记得查询完参数后要断开adb连接]
连接中:
连接成功:
五、Appium开始录制:
1.区域按钮介绍:
2.开始录制:
(1)点击录制:
进入录制状态
(2)选择操作:
选择元素还是滑动
我们先来一个滑动:点击滑动---
录制记录了滑动的代码
再来一个元素的点击:
记录了点击元素的操作
上面就是简单的滑动,元素的点击、输入、清空的操作的录制。
3.结束录制:
点击结束录制,录制就结束了。代码会完整保存在记录区中。
选择要生成的语言,再复制代码
六、在pycharm中运行appium代码:
1.前题:
1.1adb未连接
adb kill-server
1.2appium未连接
这个界面就行
1.3手机(模拟器)没有被连接
2.粘贴代码后要注意的几点:
2.1首行注明编码格式:
首行加入以下一行代码用来说明编码格式
#encoding=UTF-8
2.2TouchAction标红色:
需要导入相关的包
鼠标置于目标字段中----->alt+enter----->回车-
2.3定位方式加深:
2.3.1加深的原因:
appium继承了selenium2,生成的定位方式自然是selenium2的定位方式。如果python安装的对应的selenium版本的定位方式与selenium2的定位方式写法不同,就会出现标红的形式。【find_element_by_的定位方式在selenium3.0后续已弃用,改成了find_element("","")的形式】
2.3.2解决办法:
修改降低selenium的版本为3.0以下,使之一致。
或修改成新的写法。
3.完善后的代码:
截图中的asynic忽略哈,导入错了,后面正了。应该是time
#encoding=UTF-8
from time import sleep
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
caps = {}
caps["appPackage"] = "com.zzly99.wnl"
caps["appActivity"] = "com.zzly99.wnl.ui.Welcome"
caps["deviceName"] = "127.0.0.1:62001"
caps["platformName"] = "Android"
caps["platformVersion"] = "7.1.2"
#连接设备
driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
sleep(3)
#滑动
TouchAction(driver).press(x=1067, y=471).move_to(x=1045, y=2467).release().perform()
sleep(5)
#同意协议
el1 = driver.find_element("id","com.zzly99.wnl:id/btnLogin")
el1.click()
sleep(3)
#同意进入
el2 = driver.find_element("xpath","/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.LinearLayout[2]/android.widget.TextView")
el2.click()
sleep(20)
driver.quit()
4.点击运行
4.1pycharm开始启动
启动稍候-appium如下窗口开始连接启动
4.2连接成功:
查看手机(模拟器)看运行---运行起来了------手机模拟器开始被操纵
七、后话:
1.定位方式的优化:
如上中,使用Xpath定位生成的定位方式,巨巨巨长且太难看了,可以进行自己定义定位方式的写法。具体的写法可以进一步学习,优化代码的美观和长度。
2.自动化框架的完善:
加上pytest、selenium、unittest等结合使用、断言,等待,加油吧。各位。
【END】
庆祝一下