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. 【pwn】ez_pz_hackover_2016 --pwngdb和pwntools的结合,动态调试

    首先checksec 没开nx,说明堆栈可执行,初步考虑需要shellcode,然后拖进ida看主函数逻辑 看chall函数   printf("Yippie, lets crash: %p ...

  2. (转)用GPU做DeepLearning要比CPU快40~80倍

    The speed difference of CPU and GPU can be significant in deep learning. But how much? Let's do a te ...

  3. Android 使用 ContentProvider 简单操作数据库

    ContentProvider 可以用来原生读写 Android 自带的数据库 SQLite. 使用 Studio 创建一个 ContentProvider, 名字叫 TestContentProvi ...

  4. ACPM高效C++组件管理让音视频终端SDK性能更好、稳定性更高

    本专栏将分享阿里云视频云MediaBox系列技术文章,深度剖析音视频开发利器的技术架构.技术性能.开发能效和最佳实践,一起开启音视频的开发之旅.本文为MediaBox技术架构篇,重点从 ACPM介绍. ...

  5. redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。

    大家如果对使用netty搞这些http请求什么的感兴趣的,可以参观我自己创建的这个项目. nanshaws/nettyWeb: 复习一下netty,并打算做一个web项目出来 (github.com) ...

  6. [ARC105E] Keep Graph Disconnected

    题目链接 好题. 如果 \(1\) 和 \(n\) 一直联通,开始即结束. 如果 \(n\mod 4=1\),那么 \(\frac 12x(x+1)+\frac12(n-x)(n-x+1)\) 为偶数 ...

  7. HDU 4787 GRE Revenge

    Now Coach Pang is preparing for the Graduate Record Examinations as George did in 2011. At each day, ...

  8. [GDOI22pj1A] 邹忌讽秦王纳谏

    时间空间限制: 1 秒, 256 MB 齐国人邹忌对齐国国君齐威王说,大王身边的人会因为私情.利益等原因而对大王阿谀奉承,所以不能光听好话,只有广泛接受群众的批评意见,才不会被蒙蔽双眼,齐国才能强盛. ...

  9. flask中使用pyjwt

    **pyjwt使用教程: ** https://pyjwt.readthedocs.io/en/stable/ 使用案例 import datetime from flask import Flask ...

  10. 华企盾DSC控制台升级提示不能连接服务器

    ​ 由于服务器Apache没有启动导致无法升级,查看版本说明看看是否是版本问题,尝试手动启动Apache服务