标题
- 一: 环境的搭建:
- 二:ADB调试工具的使用:
- 1: 原理:
- 2: 常用的ADB命令:
- 三: 元素定位工具:
- 1: 元素定位工具有两个。
- 2: 如何使用??
- 3: 案例一:
- 4: 案例二:
- 四: 快速入门:
- 1: 测试环境是否正常:
- 2: 查看APP的包名和界面名:
- 3:自动化测试:新建通讯录:
一: 环境的搭建:
1: java 的JDK
2: Android的SDK
3:Appinum的安装
4: 雷电模拟器(或者用真机测试)
5: 安装Appinum客户端
pip install Appium-Python-Client -i https://pypi.tuna.tsinghua.edu.cn/simple
二:ADB调试工具的使用:
1: 原理:
ADB分为客户端和服务器,客户端在开发者电脑,用于发送ADB命令。
安卓手机/模拟器会有Demon进程,用来接收ADB命令。
ADB服务器负责,ADB客户端和Demon之间的通信。
2: 常用的ADB命令:
三: 元素定位工具:
1: 元素定位工具有两个。
- uiautomatorviewer
- monitor
2: 如何使用??
保证电脑已经连接手机,通过adb devices查看
打开元素定位工具
查找元素定位后的信息
3: 案例一:
描述: 用uiautomatorviewer查看浏览器中文本框的参数信息。
1: 保证电脑连接手机(模拟器)
2: 打开元素定位工具uiautomatorviewer:双击即可。
3: 点击左上角的第二个获取模拟器信息:
4: 使用真正的模拟器打开浏览器,再次点击上面的按钮重新获取。
5:注意的问题:
自动打开的命令窗口不要关(出现的黑窗口不要关)
打开uiautomatorviewer闪退,或者打开monitor空白,因为jdk版本过高导致
软件突然报错解决方法:
adb kill-server
adb start-server
4: 案例二:
描述: 使用monitor查看浏览器中文本框的参数信息
1:双击monitor.bat。
2:查看坐标是否有手机(模拟器的信息),如果没有右击右上面的DDMS,选择重置。
3: 点击手机位置,获取当前手机(模拟器的截图)
4: 点击浏览器的文本框,获取属性信息:
四: 快速入门:
1: 测试环境是否正常:
1: 测试电脑已经连接手机:
2: 开始Appinm服务,第一次启动需要配置ANDROID_HOME和JAVA_HOME信息
点击:Start Server v1.18.0
3: 查看自己的安卓版本号:进入模拟器(手机),看自己的版本号。
4: PyCharm写代码:
5: 运行代码查看效果:
Pycharm效果:
Appium效果:
模拟器效果:启动配置,然后再关闭。
2: 查看APP的包名和界面名:
案例描述: 模拟器(手机)启动通讯录,然后使用终端命令查看,当前模拟器APP开启的包名和界面名。
1: 模拟器打开通讯录:
2: 终端输入命令,查看包名和界面名:
3: 将包名和界面名替换代码中的包名和界面名:(图有错,去掉t12)
3:自动化测试:新建通讯录:
描述:找到”创建新用户“,然后点击,再点击本地保存,然后定位姓名和电话,然后点击返回按钮就保存了。
1:获取+的属性信息
2:获取姓名文本框的信息
3: 获取电话文本框:
4: 获取返回按钮:
5: 代码:
from appium import webdriver
import time
# 初始化平台信息
desired_caps = {
'platformName': 'Android', # 表示平台类型
'platformVersion': '5.1.1', # 表示平台的系统版本
'deviceName': '****', # 表示的是设备的ID,如果当前电脑只连接了一台手机或模拟器,可以使用4个*号代替
'appPackage': 'com.android.contacts', # 表示app的包名
'appActivity': '.activities.PeopleActivity', # 表示的是app的界面名,这里为`设置`的界面
'noReset': True # 启动app时不要清除app里的原有的数据
}
# 远程控制
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 获取+元素并且点击
driver.find_element_by_id('com.android.contacts:id/floating_action_button').click()
time.sleep(2)
# 获取姓名文本框,然后添加信息:任善文
driver.find_element_by_class_name('android.widget.EditText').send_keys("李建超")
time.sleep(1)
# 获取电话文本框,然后添加信息:11111111
class_list = driver.find_elements_by_class_name('android.widget.EditText')
el = class_list[3]
el.send_keys("11111111")
time.sleep(1)
# 获取返回按钮,并且点击
driver.find_element_by_class_name('android.widget.ImageButton').click()
time.sleep(1)
driver.quit() # 退出