Appium介绍

Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。可用于IOS和Android以及firefox的操作系统。原生的应用是指用android或ios的sdk编写的应用,移动网页应用是指网页应用,类似于ios中safari应用或者Chrome应用或者类浏览器的应用。混合应用是指一种包裹webview的应用,原生应用于网页内容交互性的应用。
重要的是Appium是跨平台的,何为跨平台,意思就是可以针对不同的平台用一套api来编写测试用例。

如图所示,appium主要分为三个点:client端,server端,及测试移动设备 
● client端:用各类语言写的测试脚本 
● server端:我们安装appium工具的那部分,专门用来监听并接收来自client端的请求,转发请求并控制移动设备执行测试,默认开启并监听4723接口 
● 移动设备:支持三类设备,我们的最终目的:在设备上自动执行指定的操作 
整个过程: 
第一,在某台服务器上安装appium工具(server端),开启进程(默认4723接口)进行监听; 
第二,编写测试脚本,放置到服务器上,执行该测试脚本(相当于发送命令给server端) 
第三,移动设备接收到server端发送过来的命令,执行指定的操作

Appium应用及操作

(一)调用appium过程
1、配置手机设备参数,告诉server端我想调起的是哪一台手机设备 
2、抓取手机上应用的控件,指定对应的控件来进行操作 
3、对抓取到的控件进行操作,比如点击、填写参数等
(二)第一步,配置手机设备参数
Appium 的 Desired Capabilities 基本配置如下:

from appium import webdriver
desired_caps = {
'platformName': 'Android',
'deviceName': '611AKBPP22HR5', # adb devices查到的设备名
'platformVersion': '4.4.2',
'appPackage': 'com.duowan.mobile', # 被测App的包名
'appActivity': 'com.yy.mobile.ui.splash.SplashActivity',# 启动时的Activity
}
driver = webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)

常见参数解释:
● deviceName:指定启动设备,比如Android Emulator、iPhone Simulator等 
● automationName:指定自动化引擎,默认appium 
● platformName:指定移动平台,Android或者iOS 
● platformVersion:指定平台的系统版本。例如指定Android系统版本为4.2 
● appActivity:待测试app的Activity,注意,原生app的话要在activity前加个“.” 
● appPackage:待测试app的包名(package)信息
(三)第二步,抓取手机上应用的控件
通过Android SDK内置工具uiautomatorviewer.bat来查看手机应用的控件参数(该工具位于 /tools/bin/ 目录下) 
1、id定位

使用方法: 
driver.find_element_by_id('com.android.contacts:id/three')

2、name定位

使用方法: 
el = self.driver.find_element_by_name('未接来电') 
el = self.driver.find_elements_by_name('未接来电')

3、class name 定位

使用方法: 
els = self.driver.find_element_by_class_name('android.widget.ImageButton') 
els = self.driver.find_elements_by_class_name('android.widget.ImageButton')

4、Accessibility ID定位

使用方法: 
el = self.driver.find_element_by_accessibility_id('三') 
el = self.driver.find_elements_by_accessibility_id('三')

5、android uiautomator定位

使用方法: 
el = self.driver.find_element_by_android_uiautomator('new UiSelector().description(星形符号")') 
els = self.driver.find_elements_by_android_uiautomator('new UiSelector().clickable(false)')

(四)第三步,操作控件

1.scroll
scroll(self, origin_el, destination_el):
从元素origin_el滚动至元素destination_el
举例:driver.scroll(el1, el2)
用法:driver.scroll(el1,el2)

2.tap
tap(self, positions, duration=None):
模拟手指点击(最多五个手指),可设置按住时间长度(毫秒)
举例:driver.tap([(100, 20), (100, 60), (100, 100)], 500)
用法:driver.tap([(x,y),(x1,y1)],500)

3. swipe
swipe(self, start_x, start_y, end_x, end_y, duration=None):
从A点滑动至B点,滑动时间为毫秒
举例:driver.swipe(100, 100, 100, 400)
用法:driver.swipe(x1,y1,x2,y2,500)

4. keyevent
keyevent(self, keycode, metastate=None):
发送按键码(安卓仅有),按键码可以上网址中找到
用法:driver.keyevent(‘4’)

5. press_keycode
press_keycode(self, keycode, metastate=None):
发送按键码(安卓仅有),按键码可以上网址中找到
用法:driver.press_ keycode(‘4’)

6.text
text(self):
返回元素的文本值
用法:element.text

7.click
click(self):
点击元素
用法:element.click()

8.get_attribute
get_attribute(self, name):
获取某元素的相关值
用法:element.get_attribute(“name”)

9.size
size(self):
获取元素的大小(高和宽)
用法 driver.element.size

10. page_source
page_source(self):
获取当前页面的源
用法:driver.page_source

11.quit
quit(self):
退出脚本运行并关闭每个相关的窗口连接
举例:driver.quit()

***微信扫一扫,关注“python测试开发圈”,了解更多测试教程!***

Appium 自动化测试(3)--Appium框架与流程介绍的更多相关文章

  1. OpenCart框架运行流程介绍

    框架运行流程介绍 这样的一个get请求http://hostname/index.php?route=common/home 发生了什么? 1. 开始执行入口文件index.php. 2. requi ...

  2. Python+Appium自动化测试(5)-appium元素定位常用方法

    对于Android而言,查找appUI界面元素属性的工具有三种:appium desktop,uiautomatorviewer.bat,weditor.之前已经介绍过了weditor的使用,这里我将 ...

  3. Appium 自动化测试(5)-- Appium详细介绍:Appium 手机自动化测试_TesterHome公开版pdf

  4. Python+Appium自动化测试(1)-appium环境搭建

    用python+appium做appUI自动化测试,系统为Windows.首先是JDK与Android SDK的安装与环境变量的设置. 一,安装JDK,配置JDK环境变量 1,下载jdk jdk8官网 ...

  5. Python+Appium自动化测试(2)-appium连接真机启动app

    app自动化测试的第一步,是启动被测app.appium环境搭建好后,我们就可以连接真机启动app了.环境为windows,Appium1.18.0,Android手机,被测app为今日头条app,让 ...

  6. Appium 自动化测试(8) -- Appium Python client -- API

    最好的学习方法,就是看源码! 在  \appium\webdriver\webdriver.py ,新增了两个封装好定位安卓元素的方法,如  find_element_by_accessibility ...

  7. Appium 自动化测试(7) -- Appium 服务器初始化参数设置

    Desired Capabilities Desired capabilities 是一些发送给 Appium 服务器的键值对集合 (比如 map 或 hash),告诉服务器我们想要启动什么类型的自动 ...

  8. 『与善仁』Appium基础 — 8、Appium自动化测试框架介绍

    目录 1.主流的移动端自动化测试框架 (1)Robotium (2)Macaca (3)Appium 2.自动化测试工具的选择 3.Appium简介 提示:我们前面说的Android环境搭建和adb命 ...

  9. Native App自动化测试及Appium框架介绍

    一  自动化工具简介 1 Appium : 开源,跨平台的自动化测试工具,用于测试Native(原生)和Hybrid(混合)应用,支持IOS/Android/FirefoxOS 平台. 2  环境 : ...

随机推荐

  1. [转] mysql数据库分离和附加

    1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导 ...

  2. poj1039 Pipe【计算几何】

    含[求直线交点].[判断直线与线段相交]模板   Pipe Time Limit: 1000MS   Memory Limit: 10000K Total Submissions:11940   Ac ...

  3. The Rise of Database Sharding DATABASE SHARDING

    w玻璃碎片.0共享 http://www.agildata.com/database-sharding/ The Rise of Database Sharding The concept of Da ...

  4. vue - 计算属性、表单输入绑定

    计算属性 computed:{} <!DOCTYPE html> <html> <head> <title></title> </he ...

  5. Dolls---hdu4160(最大匹配)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4160 有n个长方体形的娃娃:当长宽高都小于另一个的时候可以放进去,每一个里面最多放一个,问最优的套法下 ...

  6. SLAM FOR DUMMIES 第5-8章 中文翻译

    5,SLAM的处理过程 SLAM过程包括许多步骤,该过程的目标是使用环境更新机器人的位置.由于机器人的里程计通常是存在误差的,我们不能直接依赖于里程计.我们可以用激光扫描环境来校正机器人的位置,这是通 ...

  7. MySQL5.7多源复制

    MySQL5.7开始支持多源复制,也就是多主一从的复制架构: 使用多源复制的考虑: 1.灾备作用:将各个库汇总在一起,就算是其他库都挂了(整个机房都无法连接了),还有最后一个救命稻草: 2.备份:直接 ...

  8. Mysql 数据库系列

    阅读目录 第一篇:  数据库初识 第二篇:  库操作 第三篇:  存储引擎 第四篇:  表操作 第五篇:  数据操作 第六篇:  索引原理与慢查询优化 第七篇:  数据备份 pymysql模块 第八篇 ...

  9. 《Clean Code》一书回顾

    <Clean Code>一书从翻开至今,已经差不多两个月的时间了,尽管刨去其中的假期,算下来实在是读得有点慢.阅读期间,断断续续的做了不少笔记.之前,每每在读完了一本技术书籍之后,其中的诸 ...

  10. java线程初写,陆续更新中。。

    (1)什么是线程?线程,是程序执行流的最小单元.线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享 ...