Python3学习笔记_app自动化测试_快速启动_20200806

Python3学习笔记_app自动化测试_快速启动_20200806

appium 介绍
appium 是一个开源的测试自动化框架,可以与原生的、混合的和移动的 web 应用程序一起使用
它使用 WebDriver 协议驱动iOS、Android 和 Windows 应用程序

平台支持:
    ios
        用到的框架:XCUItest
    Android
        用到的框架:
            uiautomator2、
            espresso
            命令:adb shell uiautomator --help
    windows
        桌面应用测试
        WinAppDriver
    mac
        桌面应用测试
        Mac Driver
    web端:
        移动端的浏览器(网页版,H5)

3种App:
    原生native
        手机系统原生的组件和原生的开发语言实现的App
        Android:java/kotlin
        ios:OC/swift
    混合
        Hybird App
        native 和 web 整合到一起
            有各自的擅长的地方
            原生响应速度更快,表现更加流畅,兼容性更好
            web 加载速度比较慢,兼容性也比较差,
            会把不重要的或者比较简单的页面做成web的形式,而比较核心的做成原生的形式
    web【移动端的web】
        HTML css js【套在原生的壳上】
        下拉出现网页地址,一般就是网页
appium 设计哲学:
开源:可以看它的源代码,appium server 端是用JS写的
跨平台:ios、Android、Windows、Mac、移动端web
多语言:python/ruby/java/php/c#
    对于不主流的语言,只要能自己封装一个库,能够访问server端的api,访问它的接口,你就能够去进行自动化测试
    所以理论上而言,任何的语言都可以进行appium的自动化测试

你没有必要为了自动化而重新编译你的应用或者以任何方式修改它
    Android/iOS系统自带框架
    不管你的应用是用什么语言写的,都可以使用Python来做自动化测试
你不应该被限制在特定的语言或框架上来编写运行测试
    API调用
移动端自动化框架在自动化接口方面不应该重造轮子
    直接使用 WebDriver 提供的接口即可
移动端自动化框架应该开源,不但在名义上而且在精神和实践上都要实至名归
协议
appium 使用的协议就是webdriver 提供的协议,它的底层协议就是HTTP,
selenium 将HTTP封装好的协议,又重新命名了一个名字:json Wire Protocol(https://w3c.github.io/webdriver)
    【w3c是万维网的一个标准的组织,关于万维网方面的规则就是W3C来定的】
WebDriver 已成为自动化web浏览器的事实上的标准,并且是 W3C 工作草案
appium 在webdriver 上提出了Mobile json Wire Protocol
    因为selenium 封装的json Wire Protocol无法满足移动端的测试,
    所以appium有新增了一些,并将其命名为:Mobile json Wire Protocol
    专门针对移动端的

web 的源代码是HTML格式的,而App端的源代码是xml 格式的
流程和原理
adb------------安卓调试桥,类似于xshell,ssh连接远程服务一样的
UIautomator2---原生的自动化测试框架
selenium 和appium 的原理是一样的,只是用的工具不一样

selenium:
                     HTTP                        JS
python client------------------->webdriver------------------>浏览器


appium:
                HTTP                                    adb【安卓调试桥】
                                                       android sdk tools
python client--------------------->appium server------------------------------------>
                专业一点就是:
             json Wire Protocol                   UIautomator2【安卓原生的自动化测试框架】
                                               -------------------------------------->Android
                                                   XCUItest【ios原生的自动化测试框架】
                                               -------------------------------------->ios
自动化测试框架
iOS9.3以上:Apple---- XCUITest
iOS9.3以下:apple's---- UIAutomation
Android 4.3+:Google's----- UIAutomator/UiAtutomator2
Windows:Microsoft's ----- WinAppDriver
Espresso: 安卓测试
Mac:Mac Driver
Desired Capabilities
caps={
"platformName":"Android",
"deviceName":"emulator-5554",

# 要启动的软件
"app":"app路径",

# 如果是已经安装了App,就不需要使用app这个字段了,就需要使用appPackage 和 appActivity
"appPackage":"",
"appActivity":"",


# 安卓的系统版本,如果不需要进一步的安全校验,这个字段不需要写
"platformVersion":"4.4",

# 不重置你的应用数据【如果是进入一个新的App,就会有引导页面,如果进入一个老的App,是没有的,如果是不重置,那就不需要每次都从最开始的引导页面进入】
# 到底需不需要,看具体需求,一般是不需要的,就是true
"noReset":"true",

# 自动化测试框架的名称,可以指定也可以不指定,默认是UiAutomator2
"automationName":"UiAutomator2",

# 如果是混合应用,那就需要提供这个字段
"chromdriverExecutable":"",


# 如果想输入中文的时候,就需要传这两个字段,中文键盘
"unicodeKeyboard":"true",
# 重置键盘
"resetKeyboard":"true",

# 授权,自动授权
"autoGrantPermissions":"true",
}

资料查看:http://appium.io/docs/en/writing-running-appium/caps

platformName 必选
deviceName 必选
app 可选,要么选app,要么选appPackage和appActivity
appPackage 可选
appActivity 可选
platformVersion 可选
noReset 一般是true
automationName 可选,测试框架的名称
browserName 可选,直接测web用,value可以为Chrome
autoWebview 可选,开机进入webview模式,如果是混合应用,可以使用
chromdriverExecutable 可选
unicodeKeyboard 可选,但是跟resetKeyboard组合使用
resetKeyboard 可选,但是跟unicodeKeyboard组合使用
autoGrantPermissions 可选
获取appPackage和appActivity
找开发问
通过apk分析出,通过aapt指令
    终端执行aapt,确保aapt已添加到环境变量当中
    如果没有把aapt添加到环境变量中,可以切到aapt的路径下才可以使用
    aapt dump badging apk包的路径
        比如:aapt dump badging d:\*.apk
        执行后得到package name,launchable-activity name
通过:adb shell am monitor
通过:adb logcat | finStr -i displayed
appium 调试技巧
python 往 selenium 服务端发送一条请求,创建一个会话对象
    POST /wd/hub/session
    {"capabilities":{"firstMatch":[{}]},"desiredCapabilities":{}}
selenium server 接收到数据,对数据进行解析和验证
    W3C说接收到了这样一条指令
    BaseDriver 【就是appium 封装的一个驱动程序,是安装在手机上面去接收指令的Appium setting】
        说接收到一个事件,去创建一个session

    数据验证的过程
        验证不通过,下面就不会有新的内容,直接抛出错误,把响应结果返回给客户端
        验证通过,创建session
查找adb
    如果你的adb找不到(没有添加到环境变量)就会直接报错
    如果你的adb可以使用,就获取我们电脑上的手机(真机或模拟机)
通过adb连接到设备
通过adb检查api版本是否兼容【检测设备的api版本】
    如果模拟机或者真机的api版本小于或等于sdk api的版本就可以
    如果大于,就会报错
通过adb启动App
uiautomator 操作
返回响应结果

注意:在执行app自动化测试的时候,要查看appium server来查找出错原因
adb 命令
作用:用来操作手机系统的,类似于Windows的cmd,Linux 的bash,xshell,putty
如果没有发现,可以尝试手动连接设备
    adb devices
    adb connect 127.0.0.1:62001
        [62001是雷电的端口号]
        [21503是逍遥的端口号]
        模拟器端口不知道的可以网上搜索
查看前台应用 activity 应用名称
    adb shell dumps activity | find "mFocusedActivity"
安装app
    adb install /appname.apk
    adb pull 手机文件路径 电脑路径      ,从手机获取
    adb push 电脑文件路径 手机文件路径   ,从电脑推文件
    adb install ,装软件
    adb devices ,设置是否连接
    adb shell
    adb connect
    adb shell pm list packages ,列举所有安装的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值