zoukankan      html  css  js  c++  java
  • 移动端测试

    before

    关于appium在windows下的出装顺序:

    • Python环境:Python3.6.6, 或者别的3.x版本。你可以在下面的百度云链接中下载,推荐Python3.5以上,为了方便编写代码,还需要安装PyCharm IDE(可选,也可以vs code)。
    • node.js。
    • Java环境:要求是java jdk 1.8及以上。
    • appium。
    • Android SDK。
    • 手机/模拟器:可以是夜神模拟器或者是其他的。
    • Appium-Python-Client。

    我的环境是:

    win 10 专业版
    Java jdk1.8
    Python3.6.6
    PyCharm2018.1
    小米手机5S/夜神模拟器6.0.7.5
    appium:1.7

    appium for win 全家桶百度云链接:

    链接:https://pan.baidu.com/s/1q7uEdv9YHxG-LRzJ20I3cQ 提取码:iq52

    开始安装吧。

    Python for Windows

    参考:https://www.cnblogs.com/sundawei7/p/11959649.html

    Node.js for Windows

    参考:https://www.cnblogs.com/sundawei7/p/11962154.html

    JAVA JDK for Windows

    参考:Java JDK for Windowselasticsearch之es for linuxMac OS配置Java环境

    Appium安装

    appium支持客户端和终端方式进行安装,这里为了方便,我们选择客户端的方式安装。

    appium桌面版安装

    下载与安装

    Gighub地址:https://github.com/appium/appium-desktop/releases

    下载到本地是个exe可执行文件,双击exe文件,一路默认安装即可。

    测试

    打开appium软件之后。

    如上图,在simple栏,默认监听0.0.0.04723端口,这里我们将host改为127.0.0.1,然后点击start server

    可以看到,启动了一个HTTP服务,监听本机的127.0.0.1:4723,这个时候就可以使用浏览器地址栏访问了。

    右上侧的三个图标分别是启动、下载日志、停止服务。

    此时,说明appium安装成功。具体使用,我们后面再说。

    appium终端安装

    Windows平台啊(说多了都是泪),很可能由于这样或那样的问题导致安装失败,所以,这里提供了两套方式安装(其实就是命令不同,但大同小异)方案。
    为虑胜先虑败,先来说怎么卸载(我就一不小心安装了最新版...):

    npm uninstall -g appium
    
    # 完事在安装指定版本
    npm install -g appium@1.7.2   # 指定版本
     

    Plan A
    终端安装(使用的是国外的源):

    npm install -g appium
    npm install -g appium@1.7.2   # 指定版本

    很大可能被墙导致安装失败,so,淘宝镜像考虑一下。
    PS:根据需要选择最新版还是指定版本,看好了再粘贴。

    # 默认安装最新版的
    npm --registry http://registry.npm.taobao.org install appium -g
    # 安装指定版本appium
    npm --registry http://registry.npm.taobao.org install appium@1.7.2 -g

    安装指定版本的可能失败......不要怕,你可能连第一条命令都执行失败....
    安装appium-doctor检测:

    npm --registry http://registry.npm.taobao.org install appium-doctor -g

    验证:

    appium-doctor

    PS:我使用这个命令是失败的,but,anyway.......
    启动appium验证:

    C:UsersAnthony>appium
    [Appium] Welcome to Appium v1.15.1
    [Appium] Appium REST http interface listener started on 0.0.0.0:4723
    OK,安装成功。

    很可能按照这套流程安装失败了.....
    来看备用Plan B方案。
    Plan B
    使用cnpm安装,首先要先配置淘宝镜像的cnpm:

    npm install -g cnpm --registry=https://registry.npm.taobao.org
    
    # 示例
    C:windowssystem32>npm install -g cnpm --registry=https://registry.npm.taobao.org
    C:UsersAnthonyAppDataRoaming
    pmcnpm -> C:UsersAnthonyAppDataRoaming
    pm
    ode_modulescnpmincnpm
    + cnpm@6.1.0
    added 354 packages, removed 363 packages, updated 144 packages and moved 3 packages in 37.303s

    这一步没问题的话,验证是否安装成功:

    cnpm -v
    
    C:windowssystem32>npm -v
    5.5.1

    我的cnpm版本是5.5.1。
    接下来,使用cnpm安装appium:

    cnpm install -g appium
    cnpm install -g appium@1.7.2
    
    # cnpm install -g appium-doctor      # 安装与否无所谓,我反正是按照成功执行失败

    启动appium

    appium -p 4700 -bp 4701 -U 127.0.0.1:62001 --no-reset --session-override

    参数说明:

    • -p是appium监听端口。
    • -bp是bootstrap的监听端口。
    • -U(U大写)是可用的设备,也就是adb devices返回的设备列表。
    • --no-reset即可避免执行用例的时候再次安装app。
    • --session-override不必每次重启session。

    示例:

    C:windowssystem32>appium -p 4700 -bp 4701 -U 127.0.0.1:62001 --no-reset --session-override
    [Appium] Welcome to Appium v1.15.1
    [Appium] Non-default server args:
    [Appium]   port: 4700
    [Appium]   bootstrapPort: 4701
    [Appium]   sessionOverride: true
    [Appium]   udid: 127.0.0.1:62001
    [Appium]   noReset: true
    [Appium] Deprecated server args:
    [Appium]   -U,--udid => --default-capabilities '{"udid":"127.0.0.1:62001"}'
    [Appium]   --no-reset => --default-capabilities '{"noReset":true}'
    [Appium] Default capabilities, which will be added to each request unless overridden by desired capabilities:
    [Appium]   udid: 127.0.0.1:62001
    [Appium]   noReset: true
    [Appium] Appium REST http interface listener started on 0.0.0.0:4700

    要是还是安装不成功......还是考虑下是否需要喝杯热茶思考一下人生吧!

    Nox for Windows

    参考:https://www.cnblogs.com/sundawei7/p/11962194.html

    Android SDK for windows

    SDK:(software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。因此,Android SDK 指的是Android专属的软件开发工具包。

    下载安装

    官网下载地址:https://www.androiddevtools.cn/

    • 下载一个SDK Tools。

    • 除此之外,还需要一些其他的依赖包,比如SDK Platform-Tools、Build-Tools等。

    • 为了简单,请使用之前提供的全家桶内提供的软件包。

    你以为解压完了就没事了?没完,还有环境变量需要添加。

    我本机将压缩包解压到了G:softwareandriod-sdk-windows这个目录。

    那么,我们需要将这个目录下的:

    G:softwareandriod-sdk-windows	ools
    G:softwareandriod-sdk-windowsplatform-tools
    G:softwareandriod-sdk-windowsuild-tools27.0.1

    如上示例的三个目录,一一添加到环境变量中。

    测试

    终端输入adb测试:

    出现一大堆命令提示符就OK啦。

    Android SDK tools

    首先,这个时候,你的Python环境、Java JDK环境、夜神模拟器、android sdk、appium环境都是配置好的。
    再来看都有哪些命令吧,这个时候,请启动夜神模拟器。
    然后找个apk测试,比如说京东APP,我们从官网把它下载到电脑上:

    官网:https://app.jd.com/android.html
    下载地址:https://storage.360buyimg.com/jdmobile/JDMALL-PC2.apk
    我们将apk下载到本地的某个目录,比如桌面。

    我们要牢记三个命令和一个工具的使用。

    首先在G:softwareandriod-sdk-windows ools目录下:

    • aapt命令,用来检测apk的包名和activity名称。
    • uiautomatorviewer.bat文件是Android SDK自带的一个元素定位工具,我们后续会用到它。

    G:softwareandriod-sdk-windowsplatform-tools目录中:

    • adb( Android Debug Bridge)命令,也就是android调试桥。也就是调试用的命令工具。

    aapt

    先来看aapt命令。

    C:UsersAnthony>aapt dump badging apk包路径
    # 也可以简写为
    C:UsersAnthony>aapt d badging apk包路径

    在一串的返回结果中,我们要重点关注两个点:

    C:UsersAnthony>aapt d badging C:UsersAnthonyDesktopJDMALL-PC2.apk
    activity name='com.jingdong.app.mall.main.MainActivity'  # activity名称
    package: name='com.jingdong.app.mall'   # apk包名

    记住它们,后续都能用上。

    adb

    PS:首先来说一个我遇到的坑,每次使用adb connect连接夜神模拟器后,都需要重启模拟器才能进行Python脚本操作。
    再来看adb都有哪些命令。
    查看版本

    C:UsersAnthony>adb version
    Android Debug Bridge version 1.0.36
    Revision 0e9850346394-android

    连接可用的设备(手机/模拟器)
    我们知道夜神模拟器监听本机的62001(或者52001)端口,所以,我们使用adb命令去连接它。

    C:UsersAnthony>adb connect 127.0.0.1:62001
    connected to 127.0.0.1:62001

    没有问题,就是连接成功。
    检查设备(手机/模拟器)是否可用

    C:UsersAnthony>adb devices
    List of devices attached
    * daemon not running. starting it now on port 5037 *
    * daemon started successfully *

    这个提示是说明夜神模拟器没有打开,因为没有可用的可连接设备。
    现在,我们将夜神模拟器启动后,再执行这条命令:

    C:UsersAnthony>adb devices
    List of devices attached
    127.0.0.1:62001 device

    现在有了一个可用的设备,我们知道这个设备是夜神模拟器。现在连接上这个设备后就可以执行一些操作了。

    安装APP
    给电脑上的android模拟器/夜神模拟器安装APP,这里还是以我们之前的京东APP,终端输入:

    adb install app APP路径地址
    
    # 示例, 安装京东apk
    C:UsersAnthony>adb install C:UsersAnthonyDesktopJDMALL-PC2.apk
    [100%] /data/local/tmp/JDMALL-PC2.apk
            pkg: /data/local/tmp/JDMALL-PC2.apk
    Success
    
    C:UsersAnthony>

    使用adb命令将设备安装到指定设备,适用于多个设备同时存在的情况。

    # 安装
    adb -s 设备号 install apk安装包路径
    # 卸载
    adb -s 设备号 uninstall package包名

    再来学习一个命令:

    abd install -r JDMALL-PC2.apk

    安装apk到sd卡。

    卸载APP
    首先要知道APP的包名,当然,不是APP的名字,而是使用aapt查看出来的包名com.jingdong.app.mall

    C:UsersAnthony>adb uninstall com.jingdong.app.mall
    Success

    下面的命令是卸载APP但保留数据和缓存文件:

    adb uninstall -k com.jingdong.app.mall

    启动/停止Server
    一般来说,下面两个命令基本不会用到,因为只要设备连接正确,会自动启动 adb server 的,不过大家也需要知道这俩命令:

    # 启动
    adb start-server
    # 停止
    adb kill-server

    列出手机中装的所有APP的包名

    adb shell pm list packages

    列出系统应用的所有包名

    adb shell pm list packages -s

    列出第三方应用包名(排除系统应用的)

    adb shell pm list packages -3

    清除应用数据及缓存

    adb shell pm clear <package name>
    # 示例
    C:UsersAnthony>adb shell pm clear com.jd.app.reader
    Success

    uiautomatorviewer.bat

    uiautomatorviewer是android SDK自带的一个元素定位工具。通过截屏并分析XML布局文件的方式,为用户提供控件信息查看服务。

    使用uiautomatorviewer,你可以检查一个应用的UI来查看应用的布局和组件以及相关的属性。该工具位于SDK目录下的toolsin子目录下。
    由于我们将G:softwareandriod-sdk-windows ools目录添加到环境变量,所以我们直接可以在终端中执行这个文件。

    C:UsersAnthony>uiautomatorviewer.bat

    如果没有添加环境变量,你也可以从上述的目录中找到它,双击就OK了。
    启动之后是这样的:

    此时,如果你的模拟器或者手机已经连接就绪,那么可以点击Devices Screenshot按钮进行刷新页面。

    现在,可以看到关于京东阅读启动页面的布局已经呈现在我们眼前,你就可以根据元素搞些事情了。

    注意:这里可能有坑,就是用uiautomatorviewer的时候最好关闭appium的监听连接,否则会报错Error obtaining UI hierarchy


    这是因为当通过脚本访问apk时,由于appium也在访问SDK的工具,而此时uiautomatorviewer也去调用SDK的工具,这会引起端口冲突,所以,当使用uiautomatorviewer时,请断开appium的连接.......别问为什么,我也好烦

    重要的操作

    为了方便使用夜神模拟器,这里需要对Android SDK和夜神模拟器做一些配置。

    ‪G:softwareandriod-sdk-windowsplatform-toolsadb.exe文件拷贝到夜神模拟器的启动目录G:softwareNoxin下,并重命名为nox_adb.exe

    但是夜神模拟器的启动目录下已经有了nox_adb.exe文件,没关系,我们将它备份一下即可。

    这里只是将原文件备份为.bak文件,你也可以以其他形式备份,都OK的。
    另外,可能由于夜神模拟器的版本不同,启动目录也不相同,这点需要注意。
    最后,你可能会问,为什么要多这么一步操作,是因为,当启动夜神模拟器后,它会启动nox_adb.exe文件,而这个文件已经被我们偷梁换柱替换为android SDK的adb.exe文件。在后续的appium连接操作android SDK的某些功能时,就能无缝的操作夜神模拟器了,夜神模拟器相对于android SDK,它相对简单,运行速度更快一些。

    Appium-Python-Client

    Python想要操作appium,就要有专门的的连接库,这个库需要下载:

    pip install appium-python-client   # 也可下载指定版本:0.47

    测试:

    Python 3.6.2 (v3.6.2:5fd33b5, Jul  8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import appium
    >>>

    不报错就是成功。

    第一个测试用例

    下载/卸载APP

    当所有的环境与工具都准备好之后。我们就开始学习怎么操作吧。

    • 首先打开夜神模拟器。
    • 打开电脑终端(cmd)。使用adb命令连接模拟器。并测试是否连接成功。

    用到的两个命令:

    adb connect ip:port     # 连接模拟器
    adb devices     # 检测手机/模拟器是否可用

    • 安装/卸载一个APP。

    用到的命令:

    adb install apk文件路径
    adb uninstall apk包名  
    aapt d badging apk文件路径    # 获取apk文件包名

    注意,卸载时的包名不是本地的apk文件名,而是包名,如果不清楚,可以使用命令获取。

    C:UsersAnthony>adb install C:UsersAnthonyDesktopjdread_guanwang_release.apk
    [100%] /data/local/tmp/jdread_guanwang_release.apk
            pkg: /data/local/tmp/jdread_guanwang_release.apk
    Success
    
    C:UsersAnthony>aapt d badging C:UsersAnthonyDesktopjdread_guanwang_release.apk
    package: name='com.jd.app.reader' versionCode='1011102' 
    
    C:UsersAnthony>adb uninstall com.jd.app.reader
    Success

    aapt命令获取到了包名,然后就可以使用adb命令进行安装和卸载了。
    这个过程我们可以在夜神模拟器中看到效果。
    完事,我们继续将京东阅读的APP安装到夜神模拟器中去,方便后续的操作。
    接下来,我们要来点代码了。
    比如说如何通过Python代码启动APP。
    首先,打开appium连接上android SDK(展示效果由夜神模拟器呈现)。在连接过程中,需要一些必要的参数,需要我们提前获取。

    platformName

    平台名称,一般都是android平台,所以,直接写android即可。

    platformVersion

    如果你是android平台,你要告诉appium使用的android版本。

    deviceName

    手机设备名称,通过adb devices命令查看(连接以后才能看见的)

    appPackage && appActivity
    appPackage:apk包名。
    appActivity:apk的launcherActivity。
    都可以通过aapt命令找到:

    C:UsersAnthony>aapt d badging C:UsersAnthonyDesktopjdread_guanwang_release.apk
    package: name='com.jd.app.reader' versionCode='1011102' 
    launchable activity name='com.jingdong.app.reader.logo.JdLogoActivity'label='' icon=''

    然后,打开appium,并且修改host,然后点击启动服务。

    完事点击Start Inspector Session进行必要的配置。

    接下,开始配置json数据。

    将之前的几个参数一一添加进去即可。然后也可以使用Save保存起来。

    保存后下次就可以继续使用了。

    完事点击Start Session开始连接。

    出现这个画面就说明appium成功连接上了android SDK,并且夜神模拟器也成功打开了京东阅读。

    用Python打开APP

    此时,我们将夜神模拟器保持默认开启状态,appium监听127.0.0.1:4723即可。

    然后编辑Python代码:

    from appium import webdriver
    
    desired_caps = {
        "platformName": "android",
        "platformVersion": "4.4.2",
        "deviceName": "127.0.0.1:62001",
        "appPackage": "com.jd.app.reader",
        "appActivity": "com.jingdong.app.reader.logo.JdLogoActivity"
    }
    
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

    see also:UI Automator获取元素报错Error obtaining UI hierarchy | 用Appium进行android自动化测试 | 卸载appium | npm和cnpm(windows)安装步骤 | Appium Windows 下使用 npm 安装 Appium (详) | Appium 关于 appium 命令行端安装的稳定版 nodejs 推荐 | Windows下安装appium桌面版和命令行版 |

  • 相关阅读:
    线段树总结
    c语言实现按层次(广度优先)非递归遍历二叉链树
    三、初学.NET—Gridview的分页
    五、初学.NET—Gridview自动编号和鼠标停留行加背景
    四、初学.NET—Gridview外部按钮选中、删除一行
    二、初学.NET—Gridview的排序
    一、初学.NET—数据库连接字符串
    .net web study
    C# 接口
    c#索引器
  • 原文地址:https://www.cnblogs.com/sundawei7/p/11959612.html
Copyright © 2011-2022 走看看