zoukankan      html  css  js  c++  java
  • Appium 自动化测试(3)--Appium框架与流程介绍

    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测试开发圈”,了解更多测试教程!***
  • 相关阅读:
    九月读书笔记
    Apache Shiro 使用手册(一)Shiro架构介绍
    通过js动态生成页面表格
    PHP 命名空间与自动加载机制介绍
    PHP PSR 代码规范基本介绍
    PHP 图像居中裁剪函数
    PHP 获取IP地址位置信息「聚合数据API」
    HTML5 图片本地压缩上传插件「localResizeIMG」
    Apache 配置多站点访问「为项目分配二级域名」
    PHP 文件夹操作「复制、删除、查看大小」迭代实现
  • 原文地址:https://www.cnblogs.com/guanfuchang/p/9121338.html
Copyright © 2011-2022 走看看