Appium介绍及第一个例子
Appium介绍
- appium是开源的移动端自动化测试框架
- appium可以测试原生的,混合的,以及移动端的项目
- appium可以测试ios,android应用
- 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端工作流
- client端也就是我们test script是我们的webdriver测试脚本
- 中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似,Appium支持标准的webdriver JsonWireProtocol。在这里提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调用对应的框架响应操作。
- appium server会把请求转发给中间件Bootstrap.jar,它是用Java写的,安装在手机上。Bootstrap监听4723端口并接收appium命令,最终通过调用用UIautomator的命令来实现
- 最后Bootstrap将执行的结果返回给appium server
- 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介绍及第一个例子的更多相关文章
- java学习一:java介绍及第一个helloword程序
1.java语言介绍 java是一门后台开发语言 大型web语言系统开发,app后台服务首选开发语言 java这门语言大特点:跨平台,安全性高,有丰富的类库 核心思想:面向对象 2.Jdk介绍 3.为 ...
- Robot Framework自动化_环境搭建以及第一个用例
Robot Framework自动化_环境搭建以及第一个脚本 培训老师:肖能尤 2016/06/07 课程目的 一.Robot framework 环境搭建以及第一个脚本 课程内容 1 安装前准 ...
- spring笔记--使用springAPI以及自定义类 实现AOP的一个例子
Spring的另一个重要思想是AOP,面向切面的编程,它提供了一种机制,可以在执行业务前后执行另外的代码,Servlet中的Filter就是一种AOP思想的体现,下面通过一个例子来感受一下. 假设我们 ...
- 对Jena的简单理解和一个例子
本文简单介绍Jena(Jena 2.4),使用Protégé 3.1(不是最新版本)创建一个简单的生物(Creature)本体,然后参照Jena文档中的一个例子对本体进行简单的处理,输出本体中的Cla ...
- Appium介绍
Appium介绍 Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的.可用于IOS和Android以及firefox的操作系统.原生的应用是指用andro ...
- 手机自动化培训:Appium介绍
手机自动化培训:Appium介绍 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:9088214 ...
- Java基础教程1:环境配置及第一个HelloWorld.java
本文主要介绍JDK环境配置.Sublime Text3配置及第一个HelloWorld.Java程序.运行环境为Win10系统,使用JDK1.8版本. 1. JDK下载及环境配置 1.1 JDK下载 ...
- Web服务,XFire的一个例子
Web服务优点 互操作性:实现不同系统间的相互调用(语言无关.平台无关) Web服务是什么 Web 服务是一类应用程序,是能够用编程的方法通过Web调用来实现某个功能的应用程序 Web服务的体系结构 ...
- Javascript 进阶 面向对象编程 继承的一个例子
Javascript的难点就是面向对象编程,上一篇介绍了Javascript的两种继承方式:Javascript 进阶 继承,这篇使用一个例子来展示js如何面向对象编程,以及如何基于类实现继承. 1. ...
- Appium介绍及工作原理
一.Appium介绍 Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持IOS.Android及FirefoxOS平台.Appium使用WebDriver的 ...
随机推荐
- reverse--[HZNUCTF 2023 preliminary]easyAPK
首先这是一个apk文件,一开始我是用jadx打开的,发现要aes加密啥的,后面我用jeb打开,发现账号和密码都已经解密出来了 真的很方便,然后根据代码逻辑判断,这应该是安卓程序的一个登录界面,接下来我 ...
- 基础练习:FJ的字符串
问题描述 FJ在沙盘上写了这样一些字符串: A1 = "A" A2 = "ABA" A3 = "ABACABA" A4 = "AB ...
- Postgresql——jsonb类型
Postgresql Json 最近有个功能,需要用到 NoSQL 数据库.但是又不想因为这个小小的功能给系统增加一个 MongoDB 数据库,于是就想到了 Postgresql 支持 JSON 类型 ...
- 2021-09 .NET 5.0.10 Update for x64 Client (KB5006192) 安装失败,错误代码:0x80070643
上周五日常检查系统更新(强迫症晚期) 出现一项更新:2021-09 .NET 5.0.10 Update for x64 Client (KB5006192) details: https://www ...
- offline RL | IQL:通过 sarsa 式 Q 更新避免 unseen actions
题目:Offline Reinforcement Learning with Implicit Q-Learning,Sergey Levine 组,2022 ICLR,5 6 8. pdf 版本:h ...
- MCU看门狗使用注意事项
前言 最近因为项目产品硬件设计有问题,导致设计的一款产品把硬件电源开关以及硬件系统复位功能去掉了.更严重的是,这产品已经开始生产了,硬件已经无法修改,所以软件必须上看门狗,否则设备死机或是异常后就只能 ...
- 现代统计分析软件Datainside在学生成绩分析中的应用
Datainside(薪火数据)是一款非常常用的统计分析软件,广泛应用于学术研究和商业领域. 在学生成绩分析方面,Datainside提供了丰富的功能和工具,可以帮助教育机构和研究人员深入理解学生的学 ...
- Mybatis-Flex核心功能之@Column
1.是什么? MyBatis-Flex 提供了 @Column 用来对字段进行更多的配置 public @interface Column { /** * 字段名称 */ String value() ...
- SpringBoot使用Environment对象封装全部配置信息
在组件中注入Environment @Autowired private Environment env; // 直接根据key获取值 String tempDir = env.getProperty ...
- ClickHouse(18)ClickHouse集成ODBC表引擎详细解析
目录 创建表 用法示例 资料分享 参考文章 ODBC集成表引擎使得ClickHouse可以通过ODBC方式连接到外部数据库. 为了安全地实现 ODBC 连接,ClickHouse 使用了一个独立程序 ...