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. 测试笔记:本地存储localstorage与sessionstorage

    最近测试的投票项目开发说用的是localstorage.查了下是h5的本地存储.还有个sessionstorage,区别在于sessonstorage关闭页面后清空,localstorage保留. 以 ...

  2. MYSQL的基本语法

    .默认约束 区别:mysql里面DEFAULT关键字后面是不用加括号的 复制代码 代码如下: --sqlserver CREATE TABLE emp ( id INT DEFAULT() ) --m ...

  3. OpenGL进阶演示样例1——动态画线(虚线、实线、颜色、速度等)

            用OpenGL动态绘制线段.事实上非常easy,但到如今为止.网上可參考资料并不多. 于是亲自己主动手写一个函数,方便动态绘制线段.代码例如以下: #include<GL/glu ...

  4. 08_1_IO

    08_1_IO 1. 输入/输出流的分类 java.io包中定义了多个流类型(类或抽象类)来实现输入/输出功能:可以从不同的角度对其进行分类: 按数据流的方向不同可以分给输入流和输出流. 按处理数据单 ...

  5. java基础 File与递归练习 使用文件过滤器筛选将指定文件夹下的小于200K的小文件获取并打印按层次打印(包括所有子文件夹的文件) 多层文件夹情况统计文件和文件夹的数量 统计已知类型的数量 未知类型的数量

    package com.swift.kuozhan; import java.io.File; import java.io.FileFilter; /*使用文件过滤器筛选将指定文件夹下的小于200K ...

  6. udp重发java实现

    最近在处理框架通讯方面的问题,通过积累的开发经验,其实在很多情况(尤其是实时大数据量),udp是占有很多优势的:不需要连接,只管发送,理论上要快很多; 另外在穿墙上占有很大优势: 但是最大的一个问题就 ...

  7. 给大家一个我的QQ群

    很少关注博客了,提供一个QQ群讨论 我的一个QQ群:158351344

  8. [转]C++ Template

    引言 模板(Template)指C++程序设计设计语言中采用类型作为参数的程序设计,支持通用程序设计.C++ 的标准库提供许多有用的函数大多结合了模板的观念,如STL以及IO Stream. 函数模板 ...

  9. 解决mysql远程连接失败的问题

    问题描述 在我远程连接我的服务器数据库的时候,navicat给我提示了这么一个错误: ERROR : Host 'xxx' is not allowed to connect to thisMySQL ...

  10. springBoot支持PageHelp插件使用学习笔记

    首先在springboot项目的maven中加入依赖(版本可能需要自己选择合适的) <dependency> <groupId>com.github.pagehelper< ...