基于Android系统的自动化环境搭建
01 测试环境搭建
1.appium简介
Appium是一个开源的自动化测试框架 使用本机,混合动力 和移动web应用程序。它使iOS、Android和Windows应用程序使用WebDriver协议
官网:http://appium.io/
2.下载Appium
点击官网的Download Appium自动下载(最新版本)
其他版本:https://bitbucket.org/appium/appium.app/downloads/
百度盘下载:http://pan.baidu.com/s/1jGvAISu
3. 安装node.js
官网提示先装node.js,https://nodejs.org/en/下载node.js。选择的是Windows7(32位),下载后点击安装,默认安装就可以。
安装:
命令行安装:
npm install -g appium安装会比较慢,但是官方推荐使用这个
前面我们下载完appium的文件,可以直接安装
会提示缺少.NET Framework ,需要下载这个组件就可以,因为 Appium是由.NET 开发的,所以,它会依赖 .NET framework相关组件
下载.net framework ,点击下载安装就可以
4.启动 appium
appium客户端安装成功
使用 appium:
Android Settings点击左上角的第一个机器人图标
点击Appium左上角的第二个齿轮图标则弹出 General Settings 窗口
启动 appium服务
安装Android环境
安装android adt & SDK
SDK Manager 安装模拟器
使用 Windows 命令行输入 adb 查看是否配置成功,成功后输入 appium-doctor,检查 Appium环境
安装 python3
下载自己想要的版本,笔者的是 python3.5的版本,默认安装就行,安装成功后,将 python加入环境变量,在命令行输入 python验证 python环境是否成功。
官网:https://www.python.org/downloads/
安装成功后,使用命令行安装:
pip install Appium-Python-Client安装python的Appium库。在文件使用 from appium import webdriver成功即安装成功。
下载 HTMLTestRunner.py(生成测试报告)
python3的版本:
http://download.csdn.net/detail/qq_26664581/9439036
或者 http://www.cnblogs.com/sunshishi/p/4569159.html
复制下来保存为 HTMLTestRunner.py,放在安装目录的 lib下
在文件使用 import HTMLTestRunner成功即配置成功。
python语言客户端库以及 api详解(Android)
github:https://github.com/appium/python-client
github 已经把使用方法告诉大家,但是是英文的,可以自己整理一下。
02 元素定位(Android)
Uiautomatorview
hierarchyviewr
Inspector
Uiautomatorviewer是,根据个人习惯,本人以 Uiautomatorviewer为例,使用方式差不多。
案例:在手机上点开一个应用(qq 为例):
稍后点击界面上的登录后,就可以根据 Node Detail内容来定位元素
App包名:使用 APK helper查看Activiy 名称
hierarchyviewer查看
那么到此,环境搭建,api,元素定位等都有所了解,那么我们接下来就是编写脚本。下面给大家看一个脚本
from appium import webdriver #导入webdriver
import time,unittest,HTMLTestRunner #导入库
class Testlogin(unittest.TestCase):
def setUp(self):#初始化
self.desired_caps={}
self.desired_caps['platformName'] = 'Android'
self.desired_caps['deviceName']='a6969'
self.desired_caps['preformVersion']='5.0.2'
self.desired_caps['appPackage'] ='com.tencent.mobileqq'
self.desired_caps['appActivity']='.activity.SplashActivity'
#启动 app
self.driver=webdriver.Remote('http://localhost:4723/wd/hub', self.desired_caps)
time.sleep(2)
def tearDown(self):#还原测试环境
self.driver.find_element_by_id('com.tencent.mobileqq:id/conversation_head').click()
self.driver.find_element_by_id('com.tencent.mobileqq:id/settings').click()
self.driver.find_element_by_id('com.tencent.mobileqq:id/account_switch').click()
self.driver.find_element_by_id('com.tencent.mobileqq:id/logoutBtn').click()
self.driver.find_element_by_id('com.tencent.mobileqq:id/dialogRightBtn').click()
self.driver.quit()
def testLogin1(self):#测试用例
#登录,定位方式 id
self.driver.find_element_by_id('com.tencent.mobileqq:id/btn_login').click()
time.sleep(2)
me=self.driver.find_element_by_android_uiautomator('new UiSelector().text("QQ号/手机号/邮箱")')#定位
输入 qq号,使用 uiautomator定位
me.clear()#输入框输入前最好先清空下
me.send_keys('319197149')
password=self.driver.find_element_by_id('com.tencent.mobileqq:id/password')
password.clear()
password.send_keys('lileilei.930423')
self.driver.find_element_by_id('com.tencent.mobileqq:id/login').click()#点击登录
m=self.driver.find_element_by_id('com.tencent.mobileqq:id/conversation_head')
if m is not None:
print('login is sucess')
else:
print('login is Flase')
print(self.driver.find_element_by_id('com.tencent.mobileqq:id/dialogText').text)
if __name__ == '__main__':
suiteTest = unittest.TestSuite()
suiteTest.addTest(Testlogin("testLogin1"))
now=time.strftime('%Y-%m%d',time.localtime(time.time()))
report_dir= r'%s.html'%now
re_open= open(report_dir,'wb')
runner=HTMLTestRunner.HTMLTestRunner(stream=re_open,
title='QQ测试',description='测试结果')
runner.run(suiteTest)
这是一个完整简单的测试脚本,最后生成测试报告。到此一个完整的测试就完成了
在这里还是要推荐下我自己建的Python学习Q群:746506216,群里都是学Python的,如果你想学或者正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),
包括我自己整理的一份2022最新的Python进阶资料和零基础教学,欢迎进阶中和对Python感兴趣的小伙伴加入!
相关文章
- 【黑马Android】(02)短信发送器/布局演示/android下单位/android下Junit/保存数据/android下权限/xml解析和序列化
- Android 自定义View 总结
- Failed to fetch URl https://dl-ssl.google.com/android/repository/addo Android SDK更新以及ADT更新出现问题的解决办法
- 《Android源码设计模式》--状态模式--责任链模式--解释器模式--命令模式--观察者模式--备忘录模式--迭代器模式
- 【 Android Manifest 权限描述大全 】
- rk3568 android 11 更换系统签名
- Android dex系统工具
- 【Android笔记03】Android基本的UI控件(TextView、Button、EditText、ImageView、ProgressBar)
- Android图形显示系统——概述
- android 12.0 删除连接wifi的配置信息
- Android 9.0 延时开机动画解决首次开机黑屏和去掉android正在启动的提示框
- android 9.0实现通过系统属性控制挂载otg设备功能
- Android 获取Usb设备类型
- Android 获取当前系统输入法和修改系统输入法
- Android 10.0 系统settings禁止访问应用信息页
- Android 获取当前默认系统时间
- Android中的GraphicBuffer同步机制-Fence
- 【错误记录】Android Studio 集成 ARoute 编译报错 ( 兼容 support 库和 androidx 库 | add ‘tools:replace=“android:appCo )
- android:sharedUserId 获取系统权限
- Android Multimedia框架总结(二十四)MediaMuxer实现手机屏幕录制成gif图
- Android系统Camera录像过程分析
- Android系统机制解析-公共服务
- Lenovo k860i 移植Android 4.4 cm11进度记录【下篇--实时更新中】
- Https双向认证Android客户端配置
- Android 自定义View
- 【源码阅读】半个月读完Android系统开发源码
- Android 系统一级休眠命令
- 【Android-Jetpack进阶】7、DataBinding 布局的变量与事件绑定、inlclude 二级页面绑定、自定义 BindingAdapter
- Android 11.0 系统framework发送悬浮通知的流程分析
- Android Camera之SurfaceView学习
- 深入讲解Android Property机制
- Android系统信息获取 之十二:获取屏幕分辨率及密度