Appium介绍

  1. appium是开源的移动端自动化测试框架
  2. appium可以测试原生的,混合的,以及移动端的项目
  3. appium可以测试ios,android应用
  4. appium是跨平台的,可以用在osx,windows以及linux桌面系统上

Appium基本原理

在andorid端,appium基于Webdriver协议,利用Bootstrp.jar,最后通过调用UiAutomator的命令,实现APP的自动化测试

UIAutomator测试框架是Android SDK自带的APP UI自动化测试Java库

另外由于UiAutomator对H5的支持有限,appium引入了chromedriver以及safadriver等来实现基于H5的自动化。

Appium在android端工作流

  1. client端也就是我们test script是我们的webdriver测试脚本
  2. 中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似,Appium支持标准的webdriver JsonWireProtocol。在这里提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调用对应的框架响应操作。
  3. appium server会把请求转发给中间件Bootstrap.jar,它是用Java写的,安装在手机上。Bootstrap监听4723端口并接收appium命令,最终通过调用用UIautomator的命令来实现
  4. 最后Bootstrap将执行的结果返回给appium server
  5. appium server再将结果返回给appium client

第一个脚本示例

首先启动android模拟器

adb start server   #开启adb
adb dervices #查看你监听列表
adb shell "dumpsys activity |grep Focuse #查看当前包名package和当前活动对象activity

启动Appium

点击左上角有'机器人'的按钮:选择你的android版本

点击右上角的‘三角’按钮启动Appium

通过Python编写自动化测试脚本

desired_caps是一个字典,用于在appium server与手机端建立会话关系时,手机端需要告诉服务端设备相关的一些参数,根据这些参数服务端可以做出相应的处理

#coding:utf-8
from appium import webdriver
#desired_caps是一个字典,负责启动服务端时的参数设置,启动session的时候是必须提供的
#Desired Capabilities本质上是key value的对象,它告诉appium server这样一些事情,比如:
#本次测试是启动浏览器还是启动移动设备?
#是启动android还是启动ios?
#启动android时,app的package是什么?
#启动android时,app的activity是什么?
desired_caps = {}
#你要测试的手机操作系统
desired_caps['platformName'] = 'Android'
#手机操作系统的版本
desired_caps['platformVersion'] = '4.2'
#使用的手机类型或模拟器类型
desired_caps['deviceName'] = 'Android'
#deviceName你的模拟器名字,就是在下载AVD的时候,你填写的,忘了的回头去找,或者在模拟器顶部会显示
#所运行的app包名
desired_caps['appPackage'] = 'com.android.calculator2'
#app运行的事件
desired_caps['appActivity'] = '.Calculator'
#启动打开app
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
#根据元素定位,执行点击操作
driver.find_element_by_name("6").click() driver.find_element_by_name("5").click() driver.find_element_by_name("9").click() driver.find_element_by_name("1").click() driver.find_element_by_name("5").click() driver.find_element_by_name("+").click() driver.find_element_by_name("6").click() driver.find_element_by_name("=").click() driver.quit()

报错

会话已存在错误-----解决方案,关掉appium重启

画出来的这三个,是需要在脚本中正确填写的

执行效果

Appium介绍及第一个例子的更多相关文章

  1. java学习一:java介绍及第一个helloword程序

    1.java语言介绍 java是一门后台开发语言 大型web语言系统开发,app后台服务首选开发语言 java这门语言大特点:跨平台,安全性高,有丰富的类库 核心思想:面向对象 2.Jdk介绍 3.为 ...

  2. Robot Framework自动化_环境搭建以及第一个用例

    Robot Framework自动化_环境搭建以及第一个脚本 培训老师:肖能尤 2016/06/07 课程目的 一.Robot framework 环境搭建以及第一个脚本 课程内容 1    安装前准 ...

  3. spring笔记--使用springAPI以及自定义类 实现AOP的一个例子

    Spring的另一个重要思想是AOP,面向切面的编程,它提供了一种机制,可以在执行业务前后执行另外的代码,Servlet中的Filter就是一种AOP思想的体现,下面通过一个例子来感受一下. 假设我们 ...

  4. 对Jena的简单理解和一个例子

    本文简单介绍Jena(Jena 2.4),使用Protégé 3.1(不是最新版本)创建一个简单的生物(Creature)本体,然后参照Jena文档中的一个例子对本体进行简单的处理,输出本体中的Cla ...

  5. Appium介绍

    Appium介绍 Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的.可用于IOS和Android以及firefox的操作系统.原生的应用是指用andro ...

  6. 手机自动化培训:Appium介绍

    手机自动化培训:Appium介绍 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:9088214 ...

  7. Java基础教程1:环境配置及第一个HelloWorld.java

    本文主要介绍JDK环境配置.Sublime Text3配置及第一个HelloWorld.Java程序.运行环境为Win10系统,使用JDK1.8版本. 1. JDK下载及环境配置 1.1 JDK下载 ...

  8. Web服务,XFire的一个例子

    Web服务优点 互操作性:实现不同系统间的相互调用(语言无关.平台无关) Web服务是什么 Web 服务是一类应用程序,是能够用编程的方法通过Web调用来实现某个功能的应用程序 Web服务的体系结构 ...

  9. Javascript 进阶 面向对象编程 继承的一个例子

    Javascript的难点就是面向对象编程,上一篇介绍了Javascript的两种继承方式:Javascript 进阶 继承,这篇使用一个例子来展示js如何面向对象编程,以及如何基于类实现继承. 1. ...

  10. Appium介绍及工作原理

    一.Appium介绍 Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持IOS.Android及FirefoxOS平台.Appium使用WebDriver的 ...

随机推荐

  1. dsBlog前后台博客系统

    博客简介:本博客采用Spring Boot + LayUI做为基础,进行的博客系统开发,与boot+vue相比,更为适合开发简单的系统,并且更容易上手,简单!高效!更易上手! Spring Boot ...

  2. 生成伪随机数 rand;srand函数

    1 相关内容来自鱼c论坛https://fishc.com.cn/forum.php?mod=viewthread&tid=84363&extra=page%3D1%26filter% ...

  3. 校验码——循环校验码CRC,海明校验码

  4. 数据仓库主流开发语言——SQL

    数仓开发语言概述  SQL语言介绍 数仓与SQL 结构化数据 二维表结构 SQL语法分类

  5. finally中的代码一定会执行吗?

    通常在面试中,只要是疑问句一般答案都是"否定"的,因为如果是"确定"和"正常"的,那面试官就没有必要再问了嘛,而今天这道题的答案也是符合这个 ...

  6. 聊聊kube-scheduler如何完成调度和调整调度权重

    本文分享自华为云社区<kube-scheduler如何完成调度和调整调度权重>,作者: 可以交个朋友. 一.概述 Kube-scheduler作为k8s集群的默认调度器,它监听(watch ...

  7. 这些 git 高级命令你知道几个

    大家好,我是 dom 哥.今天给大家分享几个 git 的高级应用. git 是目前最流行的版本控制工具.git 玩的 6 不 6,轻则影响自己的开发幸福指数 ,重则影响下班时间 .本文介绍一些日常开发 ...

  8. 使用 vve-i18n-cli 来一键式自动化实现国际化

    [Github:vue-viewer-editor/vve-i18n-cli] 这是我同事开发的国际化自动处理脚本,我进行过一次扩展,让其也支持我们一个 jQuery 老项目的国际化日常维护 至此,我 ...

  9. Vue.js 原理分析

    本文内容提炼于<Vue.js设计与实现>,全书共 501 页,对 Vue.js 的设计原理从 0 到 1,循序渐进的讲解. 篇幅比较长,需要花些时间慢慢阅读,在合适的位置会给出在线示例以供 ...

  10. JavaFx之controlsfx8下载(十七)

    JavaFx之controlsfx8下载(十七) controlsfx是JavaFx功能的扩展补充,这里我使用java8,我将源码下载下来并编译好jar,在java8的环境双击运行runSamples ...