Mobile terminal test - appium for windows

before

Appium mounted on the sequence in the windows:

  • Python environment: Python3.6.6, or else 3.x version. You can download at the following link Baidu cloud, it is recommended Python3.5 above, in order to facilitate the preparation of the code, you also need to install PyCharm IDE (optional, can also vs code).
  • node.js。
  • Java environment: requirements java jdk 1.8 and above.
  • Appi.
  • Android SDK。
  • Phone / simulator: simulator can be a god or other.
  • Appium-Python-Client.

My environment is:

win 10 Professional Edition
the Java jdk1.8
Python3.6.6
PyCharm2018.1
millet phone 5S / night God Simulator 6.0.7.5
appium: 1.7

appium for win family bucket Baidu cloud link:

Links: https://pan.baidu.com/s/1q7uEdv9YHxG-LRzJ20I3cQ  extraction code: iq52

Start installing it.

Python for Windows

Reference: https://www.cnblogs.com/sundawei7/p/11959649.html

Node.js for Windows

Reference: https://www.cnblogs.com/Neeo/articles/11637320.html

JAVA JDK for Windows

参考:java for windowsjava for linuxjava for mac

Appium installation

appium support client and terminal mode installation, in order to facilitate this, we have chosen client installed.

appium desktop installation

Download and install

Gighub Address: https://github.com/appium/appium-desktop/releases

Downloaded to a local exe executable file, double-click the exe file, all the way to the default installation.

test

After opening appium software.

As shown above, the simplebar, the default listening 0.0.0.0and 4723port, where we will host change 127.0.0.1, and then click start server.

You can see, we launched a HTTP service, monitor the machine 127.0.0.1:4723, this time you can use the browser address bar to visit.

Icon in the upper right side of the three were started, download log, stop the service.

At this point, the installation instructions appium success. Specific use, say behind us.

terminal mounting appium

Windows platform ah (say more than were tears), probably because of this or that problem led to the installation to fail, so, here are installed (in fact, different commands, but similar) two way scheme.
For concern wins first consider defeat, first is how to uninstall (I accidentally installed the latest version of ...):

npm uninstall -g appium

# 完事在安装指定版本
-g [email protected] install npm    # specified version
 

Plan A
terminal mounting (using a foreign source):

npm install -g appium
install npm -g [email protected]    # specified version

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

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

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

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

验证:

appium-doctor

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

C:\Users\Anthony>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:\windows\system32>npm install -g cnpm --registry=https://registry.npm.taobao.org
C:\Users\Anthony\AppData\Roaming\npm\cnpm -> C:\Users\Anthony\AppData\Roaming\npm\node_modules\cnpm\bin\cnpm
+ [email protected].0
added 354 packages, removed 363 packages, updated 144 packages and moved 3 packages in 37.303s

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

cnpm -v

C:\windows\system32>npm -v
5.5.1

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

cnpm install -g appium
cnpm install -g [email protected]

# 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:\windows\system32>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/Neeo/articles/11601845.html

Android SDK for windows

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

下载安装

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

  • 下载一个SDK Tools。

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

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

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

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

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

G:\software\andriod-sdk-windows\tools
G:\software\andriod-sdk-windows\platform-tools
G:\software\andriod-sdk-windows\build-tools\27.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:\software\andriod-sdk-windows\tools目录下:

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

G:\software\andriod-sdk-windows\platform-tools目录中:

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

aapt

先来看aapt命令。

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

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

C:\Users\Anthony>aapt d badging C:\Users\Anthony\Desktop\JDMALL-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:\Users\Anthony>adb version
Android Debug Bridge version 1.0.36
Revision 0e9850346394-android

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

C:\Users\Anthony>adb connect 127.0.0.1:62001
connected to 127.0.0.1:62001

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

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

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

C:\Users\Anthony>adb devices
List of devices attached
127.0.0.1:62001 device

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

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

adb install app APP路径地址

# 示例, 安装京东apk
C:\Users\Anthony>adb install C:\Users\Anthony\Desktop\JDMALL-PC2.apk
[100%] /data/local/tmp/JDMALL-PC2.apk
        pkg: /data/local/tmp/JDMALL-PC2.apk
Success

C:\Users\Anthony>

使用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:\Users\Anthony>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:\Users\Anthony>adb shell pm clear com.jd.app.reader
Success

uiautomatorviewer.bat

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

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

C:\Users\Anthony>uiautomatorviewer.bat

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

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

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

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


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

重要的操作

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

‪G:\software\andriod-sdk-windows\platform-tools\adb.exe文件拷贝到夜神模拟器的启动目录G:\software\Nox\bin下,并重命名为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:\Users\Anthony>adb install C:\Users\Anthony\Desktop\jdread_guanwang_release.apk
[100%] /data/local/tmp/jdread_guanwang_release.apk
        pkg: /data/local/tmp/jdread_guanwang_release.apk
Success

C:\Users\Anthony>aapt d badging C:\Users\Anthony\Desktop\jdread_guanwang_release.apk
package: name='com.jd.app.reader' versionCode='1011102' 

C:\Users\Anthony>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:\Users\Anthony>aapt d badging C:\Users\Anthony\Desktop\jdread_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桌面版和命令行版 |

Guess you like

Origin www.cnblogs.com/sundawei7/p/11959612.html