前面文章已经手把手教大家怎么搭建appium环境了【appium】appium自动化入门之环境搭建(上)
这个就教大家初步使用appium
这个系列预计会讲启动APP—元素定位—初步使用—API命令详解
本系列没提过的知识点也不用急,大家可以点击并输入暗号:CSDN来一起交流
第 2 章 初步使用
2.1 启动 app(淘宝)
前言
安装好appium之后,就是启动APP了
那么如何启动 app 呢?
首先要获取包名,然后获取launcherActivity。
获取这两个关键东西的方法很多, 这里就不一一多说,小伙伴们可以各显神通。
这里主要给大家推荐一个 sdk 自带的实用工具 aapt. aapt 即 Android Asset Packaging Tool
在 SDK 的 build-tools 目录下。 该工具可以查看 apk 包名和 launcherActivity,当然还有更多的功能,有兴趣的可以查看相关资料。
2.1.1 下载 aapt
-
在 android-sdk 里面双击 SDK-manager,下载 buidl-tools
-
勾选 build-tools,随便选一个版本,我这里选的是 24 的版本
-
下载完成后,在 D:\androidsdk\android-sdk-windows\build-tools\24.0.0 目录下找到 aapt.exe,将这个路径设置环境变量,添加到 path 下
-
打开 cmd。输入 aapt 出现如下界面,说明环境 OK 了
扫描二维码关注公众号,回复: 12026579 查看本文章
2.1.2 获取 apk 包名
-
将准备测试的 APK 放到 D 盘某个目录,如 D:\test
-
打开 cmd,输入指令 aapt dump badging D:\test\xxx.apk(APK 的全名, 如手机淘宝.apk)
-
以手机淘宝.apk 为例,如下图
-
这里就可以看到 apk 的包名:com.taobao.taobao 注:老司机==可以直接把 apk 放在桌面上,输入指令后拖到 cmd 框 ==
2.1.3 获取 launcherActivity
- 接着上一步操作,cmd 屏幕拖到中间 l ==找到 auncherActivity ==
- 这里可以看到,淘宝的 launcherActivity 值为 com.taobao.tao.welcome.Welcome
2.1.4 写脚本
- platformName:这里是 ==android 的 apk ==
- deviceName:手机设备名称,通过 adb devices 查看
- platformVersion:android 系统的版本号
- appPackage:apk 包名
- appActivity:apk 的 launcherActivity
2.1.5 运行 appium
-
启动 appium,右上角点三角形按钮,变成正方形,就是启动状态。
-
确认手机连上电脑
-
在 pycharm 运行脚本,随后在手机上会弹出安装下面两个软件的提示, 安装后,桌面上多两个图标。那么恭喜你启动成功!
-
接着会看到淘宝 app 已经启动啦
2.1.6 最终代码如下
`# coding=utf-8
rom appium import webdriver
desired_caps = {
'platformName': 'Android',
'deviceName': '30d4e606',
'platformVersion': '5.0',
# apk 包名
'appPackage': 'com.taobao.taobao',
# apk 的 launcherActivity
'appActivity':
'com.taobao.tao.welcome.Welcome'
}
driver = webdriver.Remote(
'http://127.0.0.1:4723/wd/hub',
desired_caps)`
这个地址是怎么来的呢?如下图:
这一篇主要学会使用 aapt 工具,然后启动 app 的一个流程
启动 app 后,下一 步就是要定位元素了,定位元素 android sdk 里面用一个自带的 uiautomatorviewer,appium 里面也有一个 Inspector,下篇会详细介绍。
2.2 元素定位 uiautomatorviewer
前言
环境搭建好了,下一步元素定位,元素定位本篇主要介绍如何使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作.
uiautomatorviewer 是 android-sdk 自带的一个元素定位工具
非常简单好用, 使用uiautomatorviewer,你可以检查一个应用的 UI 来查看应用的布局和组件以 及相关的属性。
2.2.1 启动uiautomatorviewer.bat
-
打开目录 D:\androidsdk\android-sdk-windows\tools
-
双击启动,启动之后出现如下界面
-
如果不喜欢双击启动的话,也可以在 cmd 里面通过指令启动 先 cd 到 tools 目录下,然后输入 uiautomatorviewer.bat 回车后启动服务
2.2.2 连接手机
- cmd 打开输入 adb devices,确认手机已连上
- 打开手机淘宝页面,让屏幕处于点亮状态
- 点左上角安卓机器人按钮 Devices Screenshot 按钮刷新页面
2.2.3 定位元素
-
移动鼠标到需要定位的元素上,如搜索输入框
-
右下角可以看到元素对应的属性
text:搭配新宠不能缺
resource-id:com.taobao.taobao:id/home_searchedit class:android.widget.EditText
2.2.4 点搜索框
- 前面一骗启动 app 后,休眠五秒,等待页面加载完成
- 通过 id 来定位到搜索框,然后点击
2.2.5 参考代码
# coding=utf-8
from appium import webdriver
import time
desired_caps = {
'platformName': 'Android',
'deviceName': '30d4e606',
'platformVersion': '5.0',
'appPackage': 'com.taobao.taobao', 'appActivity':
'com.taobao.tao.welcome.Welcome',
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
# 休眠五秒等待页面加载完成
time.sleep(5)
driver.find_element_by_id("com.taobao.taobao:id/home_searchedit").cli ck()
2.2.6 元素定位
(此处敲黑板,做笔记!!!)
-
appium 的 webdriver 提供了 11 种元素定位方法,在 selenium 的基础 上扩展了三个,可以在 pycharm 里面输入 driver.find_element_by 然后会自动匹配出来
-
多的三种如下,在后面的会详细介绍
- driver.find_element_by_accessibility_id()
- driver.find_element_by_android_uiautomator()
- driver.find_element_by_ios_uiautomation()
(第三个是 ios 的可以暂时不用管)
uiautomatorviewer 是 android sdk 自带的,下面将讲另一个Inspector
2.3 Appium Inspector
前言
Appium Inspector 是== appium 自带的一个元素定位工具==。
appium Inspector 的winddows 版本不太好用,但是 Mac 上的功能还是很强大的,一般 mac 上用的比较多。
2.3.1 设置 appium
- 先不要启动 appium
- 点开 android setting 界面(机器人图标)
- 勾选 Application Path,添加被测 app 的路径
- Devices name 处添加设备名称(adb devices 查看到的)
(敲黑板,记重点:通过这种方法也可查看到 apk 的包名和 Launch Activity)
2.3.2 开启 appium
- 手机确保连接电脑(adb devices 查看)
- 点 appium 右上角三角形图标,会启动服务
- 这时候可以看到手机上安装淘宝应用,并会启动淘宝
- 点 appium 右上角的搜索图标
- 点Inspector Window 界面的 Refresh 按钮刷新界面
2.3.3 Ispector Window
- 手机上打开需要单位元素的界面,然后点 Refresh 按钮刷新
- 左边菜单树,可以挨个点开
- 如果想单位界面上的“是”和“否”按钮,从菜单树就可以看到这两个 元素的结构
2.3.4 查看属性
- 选中左侧菜单树对应的元素,在右下角查看对应属性
2.5.5 常见异常
- 在使用过程中,你会发现经常会报以下这个错误
- 每次启动都会给你手机上重新安装一次应用
- 并且不能用鼠标指定某个元素,没有uiautomatorviewer 使用方便
后话
本次的文章实际代码可能有点多,大家出现错误的话可以多对应几遍,实在找不到错误可以点击并输入暗号:CSDN,来这里提问,会有大佬帮忙解答的