系统环境:win10、64位系统

一、所需软件及安装配置
所用到的软件如下:
1、JDK: jdk-8u74-windows-x64.exe
2、Python: python-3.6.5-amd64-webinstall.exe
3、Pycharm: pycharm-professional-2018.1.2.exe
4、安卓SDK: android-sdk_r24.4.1-windows
5、Node.js: node-v10.16.0-x64.msi
6、appium: Appium-windows-1.13.0
7、Appium-python-Client: 目的是将python与appium关联起来
8、夜神模拟器: nox_setup_v6.3.0.2_full.exe

软件安装:

1.1 JDK

下载地址:https://www.oracle.com/technetwork/java/index.html

python 安卓模拟器脚本定位按钮_python


选择自己需要的版本下载,我这里下载的是jdk-8u74-windows-x64.exe安装步骤:

正常安装即可(文件名不要含中文及空格)

我的jdk、jre安装目录为:E:\java\jdk1.8.0_74 、E:\java\jre1.8.0_74

配置环境变量:

右击我的电脑—>属性—>高级—>环境变量,在系统变量中新增如下:

变量名:JAVA_HOME 变量值:E:\Java\jdk1.8.0_74

变量名:JRE_HOME 变量值:E:\Java\jdk1.8.0_74\jre

变量名:CLASS_PATH 变量值:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib;

python 安卓模拟器脚本定位按钮_android_02


在系统变量Path中增加变量值%JAVA_HOME%\bin、%JRE_HOME%\bin

python 安卓模拟器脚本定位按钮_python 安卓模拟器脚本定位按钮_03


安装校验:

快捷键win+R—>输入cmd—>输入javac和java —>回车,如果出现用法的中文则说明安装成功。

快捷键win+R—>输入cmd—>输入java -version —>回车,可以查看版本号

python 安卓模拟器脚本定位按钮_python 安卓模拟器脚本定位按钮_04

1.2 Python

下载地址:https://www.python.org/

python 安卓模拟器脚本定位按钮_android_05


选择自己需要的版本下载,我这里下载的是python-3.6.5-amd64-webinstall.exe安装步骤:

正常安装即可,我的安装目录为:E:\Python36

配置环境变量:

右击我的电脑—>属性—>高级—>环境变量,在系统变量Path中增减变量值E:\Python36

python 安卓模拟器脚本定位按钮_android_06


安装校验:

快捷键win+R—>输入cmd—>输入python —>回车,出现版本信息则说明安装成功。

python 安卓模拟器脚本定位按钮_安装步骤_07

1.3 Pycharm

下载地址:http://www.jetbrains.com/pycharm/download/#section=windows

python 安卓模拟器脚本定位按钮_android_08


选择自己需要的版本下载,我这里下载的是pycharm-professional-2018.1.2.exe

安装步骤:
正常安装即可。我的安装目录为:E:\PyCharm 2018.1.2 、工作目录为:E:\PycharmProjects

1.4 安卓SDK

下载地址:http://tools.android-studio.org/index.php/sdk/

python 安卓模拟器脚本定位按钮_python 安卓模拟器脚本定位按钮_09


选择自己需要的版本下载,我这里下载的是windows版的android-sdk_r24.4.1-windows.zip

安装步骤:

直接解压至E盘,解压后目录为:E:\android-sdk-windows 。

打开解压后的E:\android-sdk-windows文件夹,点击SDK Manager,安装Tools下的Android SDK Platform-tools和Android SDK Build-tools;Android SDK Tools可以选择是否更新,建议直接更新;镜像:随便选个版本也可以选择多个版本安装(由于镜像比较大,如果是直接连接真机运行的话可以不下载镜像);GoogleFQ安装:Extras文件夹下所有的全部安装 。配置环境变量:

右击我的电脑—>属性—>高级—>环境变量,在系统变量中新增如下:

变量名:ANDROID_HOME 变量值:E:\android-sdk-windows

python 安卓模拟器脚本定位按钮_android_10


在系统变量Path中增加变量值:

%ANDROID_HOME%\platform-tools

%ANDROID_HOME%\tools

%ANDROID_HOME%\build-tools\29.0.1 (其中29.0.1根据安装的版本号修改)

python 安卓模拟器脚本定位按钮_android_11


安装校验:

快捷键win+R—>输入cmd—>输入adb --version —>回车,出现adb版本信息则说明安装成功。

python 安卓模拟器脚本定位按钮_python_12

1.5 Node.js

下载地址:https://nodejs.org/en/

python 安卓模拟器脚本定位按钮_安装步骤_13


根据自己需要选择版本下载,我这里下载的是node-v10.16.0-x64.msi

安装步骤:

正常双击安装即可,我的安装目录为:E:\nodejs

配置环境变量:

正常安装的话默认会自动配置环境变量,可以检查一下系统变量Path的变量值有没有E:\nodejs,如果没有则手动添加。

python 安卓模拟器脚本定位按钮_android_14


安装校验:

命令行输入npm 再回车,如果出现以下信息,则说明安装成功。

python 安卓模拟器脚本定位按钮_安装步骤_15


1.6 appium

下载地址:http://appium.io/

根据自己需要选择版本下载,我这里下载的是windows版本的Appium-windows-1.13.0.exe

python 安卓模拟器脚本定位按钮_python 安卓模拟器脚本定位按钮_16

安装步骤:

直接双击安装,我的安装目录为:C:\Users\xie.guoyong\AppData\Local\Programs\Appium

启动appium,界面如下:

python 安卓模拟器脚本定位按钮_android_17

Host、Port默认即可,然后点击下方的Edit Confgurations,配置ANDROID_HOME、JAVA_HOME后保存。(因之前步骤中已经添加过这两个环境变量,这里appium会自动获取,可不用再配置)

python 安卓模拟器脚本定位按钮_python 安卓模拟器脚本定位按钮_18

配置完成后点击Start Server运行appium,如下:

python 安卓模拟器脚本定位按钮_安装步骤_19

1.7 Appium-python-Client安装步骤: 快捷键win+R—>输入cmd—>输入 pip install Appium-Python-Client —>回车。等待安装完成。(如果配置了虚拟环境,则跳转至虚拟环境下安装)

1.8 夜神模拟器

下载地址:https://www.yeshen.com/ (我下载的是nox_setup_v6.3.0.2_full.exe)

安装步骤:

直接双击安装即可,我的安装目录为:E:\Nox

进入E:\Nox\bin目录,将其中的adb.exe、nox_adb.exe均进行重命名作为备份。

将步骤1.4中安装的安装SDK目录E:\android-sdk-windows\platform-tools中adb.exe拷贝至E:\Nox\bin目录,并重命名为nox_adb.exe

再次将步骤1.4中安装的安装SDK目录E:\android-sdk-windows\platform-tools中adb.exe拷贝至E:\Nox\bin目录

(说明:以上步骤是为了保持安卓sdk和夜神模拟器的adb.exe版本一致,防止后面出现诸如“adb server version (41) doesn’t match this client (36); killing…”的报错)

配置环境变量:

将安装目录的E:\Nox\bin,添加至环境变量Path中,如下:

python 安卓模拟器脚本定位按钮_python_20

二、实战

1、运行夜神模拟器

1.1 先启动夜神模拟器

1.2 快捷键win+R—>输入cmd—>切换至E:\Nox\bin目录下 —>输入 adb.exe connect 127.0.0.1:62001 —>回车。(连接上模拟器,其中127.0.0.1:62001 是夜神模拟器的默认ip、port)

1.3 再次输入 adb devices—>回车。 (查看连接设备)

python 安卓模拟器脚本定位按钮_安装步骤_21

2、启动appium(参考上面步骤1.6)

3、模拟器中搜索“计算器”,下载安装“超级计算器”

python 安卓模拟器脚本定位按钮_android_22

4、打开Pycharm,创建项目apptest,新建用例目录testcase,在该目录下创建用例文件test_app.py,如下:

python 安卓模拟器脚本定位按钮_python 安卓模拟器脚本定位按钮_23

test_app.py代码如下:

import time
import unittest
from selenium.common.exceptions import NoSuchElementException
from appium import webdriver


class MyTests(unittest.TestCase):
    # 测试开始前执行的方法
    def setUp(self):
        desired_caps = {'platformName': 'Android',  # 平台名称
                        'platformVersion': '5.1.1',  # 系统版本号
                        'deviceName': '127.0.0.1:62001',  # 设备名称。如果是真机,在'设置->关于手机->设备名称'里查看
                        'appPackage': 'com.youdao.calculator',  # apk的包名
                        'appActivity': 'com.youdao.calculator.activities.MainActivity',  # activity 名称
                        }
        self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)  # 连接Appium
        self.driver.implicitly_wait(8)

    def test_calculator(self, duration=500, swipe_num=4, tap_num=5):
        """计算器测试"""
        time.sleep(10)
        window = self.driver.get_window_size()      # 获取窗口尺寸
        x0 = window['width'] * 0.8  # 起始x坐标
        x1 = window['width'] * 0.2  # 终止x坐标
        y = window['height'] * 0.5  # y坐标
        # 数字按键的xpath
        btn_xpath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.support.v4.widget.DrawerLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout[2]/android.widget.LinearLayout/android.widget.LinearLayout[3]/android.view.View/android.widget.GridView/android.widget.FrameLayout[{0}]/android.widget.FrameLayout'

        try:
            # 实现如果元素存在,说明是第一次登录有提醒页面,先执行滑动、点击屏幕操作引导页,然后进行运算
            # 否则说明非第一次登录,直接执行运算
            self.driver.find_elements_by_android_uiautomator('new UiSelector().text("界面优化")')

        except NoSuchElementException:
            # 输入数字、符号,进行运算
            self.driver.find_element_by_xpath(btn_xpath.format(7)).click()
            self.driver.find_element_by_xpath(btn_xpath.format(10)).click()
            self.driver.find_element_by_xpath(btn_xpath.format(8)).click()
            time.sleep(5)

        else:
            # 多次滑动屏幕,处理引导页
            for i in range(swipe_num):
                self.driver.swipe(x0, y, x1, y, duration)
                time.sleep(2)

            self.driver.find_element_by_id('com.youdao.calculator:id/guide_button').click()
            time.sleep(3)

            # 多次点击屏幕,处理蒙尘提醒
            for i in range(tap_num):
                self.driver.tap([(764, 730), (860, 780)], duration)
                time.sleep(1)

            # 输入数字、符号,进行运算
            self.driver.find_element_by_xpath(btn_xpath.format(7)).click()
            self.driver.find_element_by_xpath(btn_xpath.format(10)).click()
            self.driver.find_element_by_xpath(btn_xpath.format(8)).click()
            time.sleep(5)

    # 测试结束后执行的方法
    def tearDown(self):
        self.driver.quit()

运行代码效果如下:

python 安卓模拟器脚本定位按钮_python 安卓模拟器脚本定位按钮_24

最后: 该文档编写过程中参考了以下大神的博客:https://www.cnblogs.com/qieyu/p/10450739.htmlhttps://blog.csdn.net/u013314786/article/details/83216390https://blog.csdn.net/MenofGod/article/details/82147607