ADB工具
adb全称是Android Debug Bridge ,它是一个debug调试工具。它是一个标准的CS结构的工具,连接开发电脑和你的手机或虚拟器的桥梁。
adb部分用法
adb devices 查看已经连接的安卓手机或虚拟器
abd install XXX.apk 安装apk,需要指定apk的路径,前提需要有连接的安装设备
当电脑连接了多台安装手机时,需要指定安装到哪个设备:
adb -设备名称 install xxx.apk
例子:
//查看电脑连接的安装设备abd uninstall xxx.apk 这个是卸载应用
$adb devices
List of devices attached
DU2SSE1467010378 device1
DFE23FGR234332FD device2
//安装到device2
abd -DFE23FGR234332FD install wechat.apk
adb connect + IP 连接到指定的设备(安卓手机或虚拟机)Usage: adb connect <host>[:<port>]
注意:
1.要链接的IP ,必须和自己的PC的网络在同一个局域网内,adb 不能跨局域网链接设备
2.如果通过usb链接Android设备,通过adb devices 可以看见设备列表,但是使用不了,可以参考下面的命令
adb tcpip 5555 //查看设备端口
adb connect 192.168.0.101:5555 //连接该台设备
uiautomatorviewer
简单说明
uiautomatorviewer是一个定位工具,用来扫描和分析安卓应用程序UI控件的工具,做UI自动化测试前就必须要找到元素位置,这个东西就是来帮助我们找元素或控件的位置的。在Windows和mac中都可以使用。
要使用这些工具,你必须安装Android开发工具以下版本:
- Android SDK Tools:API 21 版本或者21以上版本;(在SDK Manager.exe中可以查看版本及下载)
- Android SDK Platform:API 16 版本或者16以上版本.
uiautomatorviewer在安卓sdk的D:\android-sdk-windows\tools,tools目录下,双击就能打开。
uiautomatorviewer界面介绍
- 首先电脑连接手机,在comand界面输入:adb devices 确保手机连接电脑
- 打开需要定位的APP的页面
- 在D:\android-sdk-windows\tools下找到uiautomatorviewer.bat,双击就能打开
1.切换页面获取快照
需要获取APP某个页面时,先在APP中切换到该页面,点击左上角的图标更新快照到uiautomatorviewer中。注意,在APP中没更新一个页面都需要点击这个按钮同步。
2.页面层级
页面右上角区域就是当前页面布局层级。
3.不可用区域
点击页面右上角黄色叹号!(Toggle NAF Nodes)会出现黄色模块,如图。这些控件是不能被uiautomatorviewer识别的,是无法获取这些控件的实例。通过uiautomator提供的API获取它们的属性、或者对这些元素进行点击等操作是做不到的,因为无法得到这些控件的实例。
4.属性详情区域
右下方是当前页面或定位到某个控件的属性详情。
主要属性:
index、text(name)、resource-id(id)、class、package、content-desc(name)
需要注意一个问题:
这个页面属性的text属性定位方式是针对name定位,但是在新版本appium中已经去掉了name定位。
driver.find_element_by_name("Hybrid设计").click()
sleep(1)
driver.find_element_by_name("开始学习").click()
上面是通过真机操作,另外通过模拟器的需要注意:
1.在这里需要记住一个问题,国产的模拟器,所以在启动模拟器后需要adb connect 127.0.0.1:xxxx,但是在这个之前你还是需要将模拟器里面的开发者选项打开的,因为只有建立连接后才能够使用定位工具,不然会报错。
2.在模拟器中安装APP:
adb install xxx.apk
安装应用到设备中去
driver.install_app('path/to/my.apk')
package和Activity
查看启动参数:
#启动参数,字典
desired_caps = {}
desired_caps['platformName'] = "Android"
desired_caps['platformVersion'] = "23"
desired_caps['deviceName'] = "7N3HPX159H051514"
desired_caps['udid'] = "7N3HPX159H051514"
desired_caps['appPackage'] = 'cn.com.open.mooc' #app的package
desired_caps['appActivity'] = '.index.splash.MCSplashActivity' #APP的activity
#开启Unicode键盘
desired_caps['unicodeKeyboard'] = 'True'
desired_caps['resetKeyboard'] = 'True'
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_caps)
package是什么?
package中文意思是包,每个APP都有一个package,而且每个APP的package都是唯一的。在做自动化测试时,在启动参数中需要添加appPackage,appium服务器才会知道哪个APP进行自动化测试。
获取package方式:
1.在uiautomatorviewer中可以获取;
Activity是什么?
Activity是Android中最基本的最常见的4大组件之一。activity是和用户进行交互的,APP中每个页面就是一个Activity。
在做自动化测试时,告诉appium对哪个APP做自动化测试后,还需要告诉appium操作APP的哪一个Activity,也就是操作哪个页面。所以需要在启动参数中传入这个app的Activity,传入一个其它APP的Activity是不行的。
在哪里可以查看APPActivity?