1.0.0:学习ui自动化准备工作

待测app,我这里有准备两个apk,这两个都是我曾经做过的项目,后续的文章都是基于这两个app!

链接:https://pan.baidu.com/s/1I0vR9Ejh8sK8e7PZP9ZtDw 密码:gzbt

1.0.1:打开pycharm新建一个项目

,把untitled改为xuexi,  点击 create创建--你会发现你的桌面上多了一个文件!然后打开你桌面上的文件,在里面创建一个子级文件,然后把百度云下载的apk包放进去

结果:

然后在新建一个Test_Case的目录,这里先不建package,直接点击目录创建即可

然后在目录下面新建一个文件Start_app_01_day

1.0.2:获取安卓设备信息

platformName   #设备型号  android或者ios
platformVersion #安卓设备版本号
deviceName #安卓设备名称
app       #设备路径  pc电脑存放apk包的路径
appPackage     #包名
appActivity   #容器
noReset        #是否重新安装app  True不重新安装
unicodeKeyboard#是否禁用手机键盘  True禁用手机输入法
resetKeyboard  #是否启动appium自带键盘 True开始手机输入法
automationName   #可选模式  本教程默认 Uiautomator2
newCommandTimeout #超时时间(s)

platformName   :  android  即可

platformVersion :手机的安卓版本,可以直接在手机上面看,当然也有高逼格的查询方式,后文会讲到通过py脚本去自动获取一台或者多台设备的信息!

deviceName   :设备名称,【adb  devices】

补充:1.如果adb devices 找不到设备,这里请自行百度,手机打开usb调试模式

2.如果adb  devices 找到设备,但是设备离线,插拔手机,注意看手机屏幕,点击【允许】

3.如果还是找不到设备,拔插手机注意电脑右下角是否在安装手机驱动,每款手机都几乎需要重新安装手机插件,另外如果你有清理过电脑垃圾,很有可能把驱动清理掉,所以这里需要稍微注意一下,不过这个都是小问题!

app :  右键复制路径

appPackage     #包名
appActivity   #容器

命令行 
aapt   dump badging  %s    备注:%s 是上个步骤复制的路径

如果输入这个报错:则找到 SDK 目录下的这个目录,随便点击一个进去复制路径,加入环境变量path

然后重新启动cmd,再次获取即可!成功后如下图所示!

后面的参数基本固定,记住就好!

Start['platformName']=''    #设备型号  android或者ios
Start['platformVersion']='' #安卓设备版本号
Start['deviceName']='' #安卓设备名称
Start['app']='' #设备路径 pc电脑存放apk包的路径
Start['appPackage']='' #包名
Start['appActivity']='' #容器
Start['noReset']='' #是否重新安装app True不重新安装
Start['unicodeKeyboard']='' #是否禁用手机键盘 True禁用手机输入法
Start['resetKeyboard']='' #是否启动appium自带键盘 True开始手机输入法
Start['automationName']=''    #可选模式  本教程默认 Uiautomator2,支持4.4+,,
                   #如果设备是4.4以下改成appium,我一般自动化不考虑4.4,现在手工测试公司都不考虑4.4-了,所以针对4.4-,
                   #做是肯定可以做的,但是有那么一丢丢定位方式和4.4+有区别--所在做的时候需要判断设备安卓版本,然后切换automationName模式--
Start['newCommandTimeout']=''  #超时时间(s)

一些较为基本参数就是这些东西

1.0.3: 下载python 第三方库!

a.文件-设置-项目

点击右侧加号  下载 Appium-Python-Client,  安装即可

温馨提示:大家会发现我的目录创建了一个 site_packages这个目录,这里大家先了解一下!

我这里是把 默认路径下的 site-packages这个目录给拷贝过来了,

注意:如果你在下载的库都是放在自己创建的目录下,那么后续调用方式就变为

from site_packages.appium import   * 这个方式

这里解释一下原因为什么要这么做:

如果在工作当中你是一个人做自动化项目,那么你所有的库放在默认位置就好!但是往往一个自动化项目是由多名自动化测试工程师完成的,可能每个人每个模块使用的库都不一样,  就会导致别人写的脚本在他自己的环境下可以调用这个库,但是在其他人的环境下却调用不鸟,所以我们需要建立一个公共库!  所有的第三方库都存在在统一的目录下!那么无论谁的库,大家都可以直接调用!

注:纯属个人见解,可能不需要这么做,但是我是这么做的.在默认路径下这个东西会存放一份,另外我会复制一份放到脚本目录来!

初学者默认路径即可,下面更新的类容也是以默认路径!  后续更新到持续集成的时候,会再次补充这个点!

1.0.4:脚本启动app

a.打开appium ---命令行输入 appium,出现下图所示,即启动appium

b.执行脚本

from appium_client_jar.appium import webdriver

Start={}

Start['platformName']='android'    #设备型号  android或者ios

Start['platformVersion']='7.1.2'  #安卓设备版本号

Start['deviceName']='2905bdb6'     #安卓设备名称

Start['app']=r'C:\Users\Administrator\Desktop\xuexi\apk\deersteward_phone_2.5.1.apk'    #设备路径  pc电脑存放apk包的路径

#上面的路径不推荐这种写法,但是目前先这么写!后续告诉大家正确的写法.另外这个包在模拟器上打开会报错,必须用真机操作,后续案例的包都是支持模拟器打开的!

Start['appPackage']='com.yce.deerstewardphone'      #包名

Start['appActivity']='com.yce.deerstewardphone.activity.SplashActivity'        #容器

Start['noReset']='True'           #是否重新安装app  True不重新安装

Start['unicodeKeyboard']='True'   #是否禁用手机键盘  True禁用手机输入法

Start['resetKeyboard']='True'     #是否启动appium自带键盘 True开始手机输入法

Start['automationName']='Uiautomator2'     #可选模式  本教程默认 Uiautomator2

Start['newCommandTimeout']=''  #超时时间(s)

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', Start)

执行发现:手机安卓版本不是7.1.1,是7.1.2,然后更正即可!注:这个手机是你测试的手机版本,手机版本应该会查看吧,不会的话自行百度!

 

设备信息填写正确之后,我们只需要盯着手机就会发现,

  1. 如果你的手机没有安装这个apk包,就会自动安装一个,
  2. 如过已经安装则会直接启动!

原因:设备信息设置了这个:noReset        #是否重新安装app  True不重新安装

结果:手机APP已经启动

												

6.0 实现app登录的更多相关文章

  1. 仿知乎app登录界面(Material Design设计框架拿来就用的TexnInputLayout)

    在我脑子里还没有Material Design这种概念,就我个人而言,PC端应用扁平化设计必须成为首选,手当其冲的两款即时通讯旺旺和QQ早就完成UI扁平化的更新,然而客户端扁平化的设计本身就存在天生的 ...

  2. 使用spring security 2.0 和extjs 3.0实现web登录

    使用spring security 2.0 和extjs 3.0实现web登录 1开发环境说明 本例使用MyEclipse 6.5作为开发工具,jdk1.5作为编译工具,tomcat6.0作为web运 ...

  3. python配合Fiddler获取windows app登录时生成cookie实例

    工具Fiddler/python3 打开Fiddler,清空一下Fidder里面的请求记录 打开app,进行登录,注意Fiddler里的请求变化 在弹出app登录的时候Fiddler里已经有了四个请求 ...

  4. DRF接入Oauth2.0认证[微博登录]报错21322重定向地址不匹配

    DRF接入Oauth2.0认证[微博登录]报错21322重定向地址不匹配 主题自带了微博登陆接口,很简单的去新浪微博开放平台创建了网页应用,然后把APP ID和 AppSecret填好后,以为大功告成 ...

  5. 安卓,支付宝app登录时,提示 服务器安全证书已过期或不可信任,请问怎么解决

    安卓,支付宝app登录时,提示 服务器安全证书已过期或不可信任,请问怎么解决 请把手机时间调成当前时间.

  6. Asp.Net MVC3.0网站统计登录认证的在线人数

    Asp.Net MVC3.0网站统计登录认证的在线人数 前言 对于一个网站来说,统计在线人数是一个很重要的工作.平时也发现很多的网站论坛等都有在线人数的显示.对于一个网站如果在线人数很多,用户看到了这 ...

  7. 如何设计App登录模块?

    1.熟悉目前常见的手机APP登陆方式 ① 账号登陆(手机.邮箱) ② 第三方登陆(微信,QQ,微博) ③ 一键快捷登录(工具类,如不记单词) ④ 游客登陆(bbs) ⑤ demo测试登陆(如友盟等) ...

  8. ThinkPHP5.0 实现 app微信支付功能

    相对于之前随笔写的<ThinkPHP5.0实现app支付宝支付功能>来说,php对接app微信支付功能就相对简单的多了,最近有加我的朋友问到app微信支付,所以我把app微信支付的demo ...

  9. App登录状态维持

    转载地址:http://www.jianshu.com/p/4b6b04244773 目前APP大都支持长登录,就是用户登录一次后,如果用户没有主动注销.清除APP缓存数据或卸载APP,就在一段时间内 ...

随机推荐

  1. 【luogu P3128 [USACO15DEC]最大流Max Flow】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3128 菜 #include <cstdio> #include <cstring> ...

  2. Python—面向对象02

    1.抽象类与归一化 ​ 接口,即提供给使用者来调用自己功能的方式.方法.入口 为什么要使用接口? 接口提取了一类共同的函数,可以把接口看做一个函数的集合 然后让子类去实现接口中的函数 这么做的意义在于 ...

  3. Mac通过域名查询IP地址

    Mac通过域名查询IP地址 方法一:使用Mac自带的"网络实用工具" 步骤: 搜索"网络使用工具",并打开: 点击LookUp,输入互联网地址,点击Lookup ...

  4. 02-第一个iOS程序-开发步骤

    打开Xcode 选择项目模板 Single View Application是最适合初学者的模板 设置项目属性 运行程序 不管怎样,先运行第一个iOS程序看看效果先(用快捷键Command + R 也 ...

  5. c#总结最近的几项重要代码

    java的代码就不说了,毕竟不是我的主业. 1.c#数据库连接池Hikari. (1)动态加载各类数据库驱动 (2)支持简单配置文件 (3)支持按照名称多数据库调用 (4)使用简洁 单数据库使用: H ...

  6. 记录JavaScript的util.js类库

    工作中用到的, 不断做为积累, 以后能用到. 也感谢前辈们.  定义Util对象 var MyUtil = new Object(); 从url中获取参数 //从url中获取参数 function G ...

  7. Maven 运行启动时****找不到符号*com.xxx.user.java

    Maven 运行启动时****找不到符号*com.xxx.user.java maven项目更改后没有安装 (install) 重新安装解决问题!

  8. linux服务基础之ftp服务

    ftp是一种文件传输协议,我们以redhat6.9为服务器系统,来介绍一下ftp服务器,这里我们先介绍一下ftp协议工作的原理 ftp协议可以在不同类型的计算机之间传输文件,工作流程大致为 1:客户机 ...

  9. Co. - Microsoft - Windows - Dos命令

    DOS命令 cd .. 是进入上一层目录,cd \ 是进入根目录 我们来重申下%~dp0和%cd%的区别, %cd%和%~dp0都能用来表示当前目录,但是他们在不同的使用场景下,功能却不相同: %cd ...

  10. python的列表数据类型及常用操作

    列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. 列表可以进行的操作包括索 ...