一: 环境的搭建:

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命令:

移动自动化---Appium入门_文本框

三: 元素定位工具:

1: 元素定位工具有两个。

  • uiautomatorviewer
  • monitor

2: 如何使用??

保证电脑已经连接手机,通过adb devices查看
打开元素定位工具
查找元素定位后的信息

3: 案例一:

描述: 用uiautomatorviewer查看浏览器中文本框的参数信息。

1: 保证电脑连接手机(模拟器)

移动自动化---Appium入门_android_02
2: 打开元素定位工具uiautomatorviewer:双击即可。
移动自动化---Appium入门_adb命令_03
3: 点击左上角的第二个获取模拟器信息:
移动自动化---Appium入门_元素定位_04
4: 使用真正的模拟器打开浏览器,再次点击上面的按钮重新获取。
移动自动化---Appium入门_android_05
5:注意的问题:

自动打开的命令窗口不要关(出现的黑窗口不要关)

打开uiautomatorviewer闪退,或者打开monitor空白,因为jdk版本过高导致

软件突然报错解决方法:
adb kill-server
adb start-server

4: 案例二:

描述: 使用monitor查看浏览器中文本框的参数信息
1:双击monitor.bat。
移动自动化---Appium入门_文本框_06
2:查看坐标是否有手机(模拟器的信息),如果没有右击右上面的DDMS,选择重置。
移动自动化---Appium入门_元素定位_07
3: 点击手机位置,获取当前手机(模拟器的截图)
移动自动化---Appium入门_元素定位_08
4: 点击浏览器的文本框,获取属性信息:
移动自动化---Appium入门_元素定位_09

四: 快速入门:

1: 测试环境是否正常:

1: 测试电脑已经连接手机:
移动自动化---Appium入门_包名_10
2: 开始Appinm服务,第一次启动需要配置ANDROID_HOME和JAVA_HOME信息
移动自动化---Appium入门_包名_11
移动自动化---Appium入门_adb命令_12
点击:Start Server v1.18.0
移动自动化---Appium入门_元素定位_13
移动自动化---Appium入门_包名_143: 查看自己的安卓版本号:进入模拟器(手机),看自己的版本号。
移动自动化---Appium入门_文本框_15

4: PyCharm写代码:
移动自动化---Appium入门_文本框_16
5: 运行代码查看效果:
Pycharm效果:
移动自动化---Appium入门_android_17
Appium效果:
移动自动化---Appium入门_android_18
模拟器效果:启动配置,然后再关闭。

2: 查看APP的包名和界面名:

案例描述: 模拟器(手机)启动通讯录,然后使用终端命令查看,当前模拟器APP开启的包名和界面名。
1: 模拟器打开通讯录:
移动自动化---Appium入门_元素定位_19
2: 终端输入命令,查看包名和界面名:
移动自动化---Appium入门_元素定位_20
3: 将包名和界面名替换代码中的包名和界面名:(图有错,去掉t12)

移动自动化---Appium入门_元素定位_21

3:自动化测试:新建通讯录:

描述:找到”创建新用户“,然后点击,再点击本地保存,然后定位姓名和电话,然后点击返回按钮就保存了。
1:获取+的属性信息
移动自动化---Appium入门_文本框_22
2:获取姓名文本框的信息
移动自动化---Appium入门_android_23
3: 获取电话文本框:
移动自动化---Appium入门_元素定位_24
4: 获取返回按钮:
移动自动化---Appium入门_android_25
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()  # 退出