App--UI自动化这种高端的名词已经被越来越多的人所高呼,可是从实际角度来讲,个人觉得还是有点鸡肋,不如接口自动化敏捷度高,工作量

也是接口自动化的好几倍。但是,【划重点了】  在技术时代中,作为测试人员还是应该需要掌握这门技术的。那么如何来实现呢?

  【AppUI自动化准备工作】

  • 环境搭建
  • 被测apk包(这里已安卓举例)

  【启动安卓虚拟机,并执行apk】

   【编写python脚本,并执行】

一、搭建环境

  说明:APP端UI自动化其实主要难点在于环境搭建,如果不能静下心来阅读并操作,那么可以关掉浏览器说拜拜了

【环境准备】:

  1. Java环境jdk  (这里演示版本为:jdk1.8.0)
  2. android-sdk   (这里演示版本为:28.0.2)
  3. node.js&Appium (这里演示版本为:node.js版本 v11.12.0 ,appium版本1.4.16)
  4. python&Pycharm(这里演示版本为:python3.6.7,pycharm无所谓了...)
  5. 安装Appium-Python-Client(pythond的appium客户端,反正就先这么理解)

1.1、安装jdk

java下载地址:https://www.java.com/zh_CN/download

打开网址,下载对应版本即可,点击安装(这里以Windows版本作为演示:)

傻瓜式安装,默认路径即可(我安装的路径为:C:\Program Files\Java\jdk1.8.0_191)。如下图所示:

配置环境变量:

在系统变量中新建JAVA_HOME,如下图所示:

在系统变量配置CLASSPATH

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;注意以.开头,如下图所示:

在系统变量中配置Path

%JAVA_HOME%\bin;%JAVA_HOME\jre\bin%; 如下图所示:

检测Java环境是否配置OK

打开cmd,输入java -version 和 javac -version 如下图所示则表示Java环境安装成功:

1.2、android-sdk

1.2.1、下载sdk并安装

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

我的解压路径为:

D:\AppAutoTest

1.2.2、运行SDK Manager,下载相关sdk

在android-sdk-windows下点击SDK Manager.exe,如图:

点击Install packages---》选择接受,如下图:

安装完成后,配置环境变量

1.2.3、配置环境变量

在系统变量中配置ANDROID_HOME,然后将platform-tools和tools配置至系统变量Path中

ANDROID_HOME,中为sdk安装目录,如下图所示:

Path中末尾追加,如图所示:

校验环境变量是否配置成功

进入cmd命令,输入adb version,如图所示表示安装成功

输入android -h,如图所示表示安装成功

 1.3、安装appium&node.js

说明:新版的appium中好像已经集合了node.js,也就是说不用再另行安装。

1.3.1、安装Appium

下载安装程序:https://github.com/appium/appium-desktop/releases?after=v1.5.0

点击安装文件,选择安装路径:

进入下一步:

点击下一步

点击next

开始安装了:

点击finish:

打开Appium:

配置环境变量:

先配置ANDROID_HOME,路径为:D:\AppAutoTest\android-sdk-windows,如图:

配置Path,如图:

在cmd中检测,环境变量是否配置成功,如图表示配置成功:

1.4、安装python和pycharm

安装python,下载地址:https://www.python.org/getit/

点击安装,傻瓜是安装即可,安装完成后在cmd中输入python检测是否安装完成,如图所示:

python的环境变量配置:

安装Pycharm,网上有太多教程,请自行百度

1.5、安装Appium-Python-Client

在cmd中输入pip install Appium-Python-Client,如图所示,表示安装成功

至此,环境则搭建完成

二、启动并创建安卓虚拟机

2.1、点击AVD Manager.exe,启动如图:

点击Creat,并配置相关参数,如图所示:

选中创建的虚拟机,点击start,如下图:

启动安卓虚拟机:

安装apk,将准备好的apk包直接拖进虚拟机 ,便可开始安装

2.2、启动appium并配置相关参数:

appium设置顿口号:

在cmd中输入adb devices查看手机信息,是否已连接安卓SDK,如下图所示表示手机已连接:

三、编写python脚本

3.1、首先获取包名

在cmd中输入aapt dump badging D:\TestApk\摩伞.apk,查看包名

在命令行中间位置找到launcherActivity,如下图:

3.2、编写python脚本

import time

from appium import webdriver

desired_caps = {}
desired_caps['platformName'] = 'Android'#手机系统
desired_caps['platformVersion'] = '4.4.2'#系统版本
desired_caps['deviceName'] = 'emulator-5554'#手机序列号,通过adb devices命令查看
#desired_caps['app'] = r'D:\Testtest\摩伞.apk'#执行包路径,电脑端存放apk的路径
desired_caps['appPackage'] = 'com.jslt.umbrella'#包名
desired_caps['appActivity'] = 'com.jslt.umbrella.ui.LaunchActivity'#launcherActivity名称
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)#地址为固定写法 time.sleep(10)
#self.assertEqual(True, False)
print(driver.get_window_size())
# 获取屏幕宽
x = driver.get_window_size()['width']
print(x)
# 获取屏幕高
y = driver.get_window_size()['height']
print(y)
# 滑屏,大概从屏幕右边2分之一高度,往左侧滑动,滑动后显示的是 热点tab
print('开始滑动第一页')
driver.swipe(x*0.9,y*0.5,x*0.1, y*0.5, 1000)
print('第一页已滑动')
time.sleep(4)
print('开始滑动第二页')
driver.swipe(x * 0.9, y * 0.5, x * 0.1, y * 0.5, 1000)
print('第二页滑动到位')
time.sleep(4)
time.sleep(3)
print('进入')
driver.find_element_by_id('nextBtn').click()
print('已进入')
time.sleep(4)
print('开始输入手机号')
num = driver.find_element_by_id('phoneEdt')
num.send_keys('')
print('手机号已输入')
driver.find_element_by_id('verifyCodeEdt').send_keys('')
driver.find_element_by_id('nextBtn').click() txt = driver.find_element_by_id('erro_toast_textview').text
if txt == '验证码错误':
driver.find_element_by_id('erro_toast_confirm').click()
pas

执行,脚本,可以看到程序在虚拟机中自动执行

至此appiun与python自动化讲解完成,大家可以躁起来了

如有问题欢迎大家进群讨论:775129837

Appium与python自动测试环境及demo详解的更多相关文章

  1. 如何搭建基于C#和 Appium 的 Android自动测试环境

    本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 如果想做手机端的自动化测试,Appium是首选的测试框架,因为网上使 ...

  2. Appium Mac系统 自动测试环境搭建

    一.python 环境准备 Mac 自带 Python 环境,一般为 2.7 版本. 1.查看当前系统默认的Python路径 which python ==> /usr/bin/python 2 ...

  3. 老司机带你用vagrant打造一站式python开发测试环境

      前言 作为一个学习和使用Python的老司机,好像应该经常总结一点东西的,让新司机尽快上路,少走弯路,然后大家一起愉快的玩耍. 今天,咱们就使用vagrant配合xshell打造一站式Python ...

  4. Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建;学习Python语言,利用Python语言来写测试用例。加油!!!

    Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建:学习Python语言,利用Python语言来写测试用例.加油!!!

  5. python+requests接口自动化测试框架实例详解

    python+requests接口自动化测试框架实例详解   转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实 ...

  6. kafka实战教程(python操作kafka),kafka配置文件详解

    kafka实战教程(python操作kafka),kafka配置文件详解 应用往Kafka写数据的原因有很多:用户行为分析.日志存储.异步通信等.多样化的使用场景带来了多样化的需求:消息是否能丢失?是 ...

  7. Spring AOP四种实现方式Demo详解与相关知识探究

    一.前言 在网络上看到一篇博客Spring实现AOP的4种方式,博主写的很通俗易懂,但排版实在抓狂,对于我这么一个对排版.代码格式有强迫症的人来说,实在是不能忍受~~~~(>_<)~~~~ ...

  8. Scala IDEA for Eclipse里用maven来创建scala和java项目代码环境(图文详解)

    这篇博客 是在Scala IDEA for Eclipse里手动创建scala代码编写环境. Scala IDE for Eclipse的下载.安装和WordCount的初步使用(本地模式和集群模式) ...

  9. python中requests库使用方法详解

    目录 python中requests库使用方法详解 官方文档 什么是Requests 安装Requests库 基本的GET请求 带参数的GET请求 解析json 添加headers 基本POST请求 ...

随机推荐

  1. andriod给ListView中的TextView增加跑马灯效果

    正常情况下跑马灯效果只需要在TextView中添加android:ellipsize="marquee" android:singleLine="true" a ...

  2. weight decay 和正则化caffe

    正则化是为了防止过拟合,因为正则化能降低权重 caffe默认L2正则化 代码讲解的地址:http://alanse7en.github.io/caffedai-ma-jie-xi-4/ 重要的一个回答 ...

  3. Media所有参数汇总

    Media所有参数汇总 我们最常需要用到的媒体查询器的三个特性,大于,等于,小于的写法.媒体查询器的全部功能肯定不止这三个功能,下面是我总结的它的一些参数用法解释: width:浏览器可视宽度. he ...

  4. javaScript校验图片大小、格式

    1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...

  5. JavaEE 面试题总结

    一. JDBC 4 1. Java中访问数据库的步骤 4 2. Statement,PreparedStatement,CallableStatement的功能.特点. 4 3. 如何利用JDBC的A ...

  6. mysql5.6 配置 文件

    mysql 3306 主库配置文件 [client] port = 3306 default-character-set=utf8mb4 socket = /ssd/mysql/3306/tmp/my ...

  7. Docker自学纪实(二)Docker基本操作

    安装docker 以CentOS7为例: 安装:yum -y install docker 启动:systemctl start docker 设置开机自启:systemctl enable dock ...

  8. Git的基本命令介绍

    Git的安装 进入官网下载系统所需要的版本  官网地址:https://git-scm.com/downloads 点击下载按钮官方网站一般会根据操作系统的自动下载所需要的Git版本. 下载完成后,点 ...

  9. C语言函数篇(五)静态库和动态库的创建和使用

    使用库函数是源码的一种保护??? <我猜的.> 库函数其实不是新鲜的东西,我们一直都在用,比如C库. 我们执行pringf() 这个函数的时候,就是调用C库的函数. 下面记录静态库和动态库 ...

  10. 散列--数据结构与算法JavaScript描述(8)

    散列 散列是一种常用的数据存储技术,散列后的数据可以快速地插入或取用. 散列使用的数据结构叫做散列表. 在散列表上插入.删除和取用数据都非常快,但是对于查找操作来说却效率低下,比如查找一组数据中的最大 ...