python-appium安卓APP自动化环境搭建
安装步骤总览:
第一步:下载安装包
- node.js
- java-sdk
- SDK Tools
- Appium
第二步:安装node.js
- D盘新建文件夹“nodejs”
- 安装时安装到此文件夹即可
- 打开cmd输入“node -v”显示版本号即为成功
第三步:安装java-sdk
-
D盘新建文件夹“Java”和“Java_an”
-
安装时 第一次输入安装路径输入“D:\Java” 第二次输入安装路径输入“D:\java_an”
-
安装完成后进入“D:\java\bin”地址栏输入cmd敲回车,打开cmd窗口。
-
输入“java”和“javac”显示相关内容即为成功(之前路径写错了 应该是进入 D:\java\bin 里面的cmd而不是D:\java_an的cmd)
java
javac
第四步:配置Java环境变量
一共配置三处环境变量
系统变量中,新建(1)
- [变量名 ] JAVA_HOME
- [变量值 ] D:\Java
系统变量中,新建(2)
- [变量名 ] CLASSPATH
- [变量值 ] .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
两个环境变量配置方式一样,注意一定要记得保存
用户变量中的path变量中新增三条新建(1)
- [变量值 ] %JAVA_HOME%\bin
- [变量值 ] %JAVA_HOME%\jre\bin
注意:win环境是分别添加的如图所示,win7环境是通过分号链接两个变量值的,详情请百度
验证java的环境变量是否成功
- 直接运行系统cmd窗口
- 输入“java”和“javac”显示相关内容即为成功
java
javac
第五步:SDK Tools和部分工具内容
- D盘新建文件夹“SDKTools”
- 安装时安装到此文件夹即可
- 安装完成后进入“D:\SDKTools”打开“SDK Manager.exe”
- 安装时只需要安装这5个就行
第六步:配置ANDROID_HOME环境变量
系统变量中,新建(1)
- [变量名 ] ANDROID_HOME
- [变量值 ] D:\SDKTools
用户变量中的path变量中新增三条新建(1)
- [变量值 ] %ANDROID_HOME%\tools
- [变量值 ] %ANDROID_HOME%\platform-tools
注意:添加配置的方式和java环境变量配置方法一样,win环境是分别添加的如图所示,win7环境是通过分号链接两个变量值的,详情请百度,记得点保存
验证android的环境变量是否配置成功
- 直接运行系统cmd窗口
- 输入“adb version”显示相关内容即为成功
adb version
第七步:安装Appium和链接手机
- 直接安装即可
第八步:链接手机进行调试
- usb数据线链接手机,打开手机usb调试(usb调试找不到请百度,模拟器链接方式下次说,这次先说真机)
- 获取设备名称
adb devices
,红框两面的就是
- 获取手机安卓版本,
手机设置》关于手机》安卓版本
- 手机类型:Android
- 生成:json
{
"deviceName": "P7CDU18C04001791",
"platformVersion": "10.0.0",
"platformName": "Android"
}
- 启动appium(不要改动默认填写的东西)
-
输入连接配置,连接手机。
-
连接成功
第九步:python代码连接操作
连接方式和web端的selenium基本相同原理也十分近似,api也几乎一样,如果selenium掌握了那么appium也是会很好掌握的。
样例代码和appium基本操作api
# -*- coding: utf-8 -*-
from appium import webdriver # 导入appium包
desc = {
"deviceName": "P7CDU18C04001791", # 手机设备名称,adb devices
"platformVersion": "10.0.0", # 手机版本,在手机中:设置--关于手机
"platformName": "Android", # 手机类型,ios或android
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desc) # 访问服务接口,并启动手机app。url参数是当appium启动后,默认访问服务地址和接口
driver.implicitly_wait(10) # 设置隐式等待时间
driver.find_element_by_id('') # 通过id定位
driver.find_element_by_xpath('') # 通过xpath表达式定位
driver.find_element_by_class_name('') # 通过class名称定位
driver.find_element_by_link_text('') # 通过元素文本定位
元素本文值 = driver.find_element_by_id('').text # 获取元素的本文值
driver.find_element_by_id('').click() # 点击元素
driver.find_element_by_id('').click() # 点击元素
driver.find_element_by_id('').clear() # 清除元素输入的内容
driver.find_element_by_id('').send_keys('输入的内容') # 向元素内输入内容
driver.back() # 进行返回操作
driver.quit() # 进行关闭链接操作
# 进行截图操作,将截图保存为指定名称并指定路径
driver.get_screenshot_as_file(u'F:\\wifibanlv\\find_element\\image\\anjian01.png')
# 进行截图操作,将截图保存为base64值
base64值 = driver.get_screenshot_as_base64()
# 进行截图操作,指定名称保存到当前脚本所在的文件夹,
driver.save_screenshot('anjian.png')
# 屏幕滑动操作
driver.execute_script("mobile:dragFromToForDuration",
{"duration": 0.5,#滑动完成所需时间
"element": None,#指定元素
"fromX": 0,#x轴滑动开始位置
"fromY": 650,#y轴滑动开始位置
"toX": 0,#x轴滑动结束位置
"toY": 100})#y轴滑动结束位置
感谢各位的关注和支持,下次准备些关于unittest测试框架的应用,支持selenium和appium;对报告内容优化和报告中截图相关事项解析,以及unittest测试框架基础概念和相关api描述及应用。至此再次感谢。