APP移动端测试高级

appium介绍

appium是一个移动端的自动化框架,可用测试原生应用,移动网页应用,和混合型应用,且是跨平台的。可用iso和android以及的操作系统。

原生的应用是指用Android 或者ios编写的应用;移动端网页应用是指网页应用,类似于ios中safari应用或者chrome应用或者浏览的应用;混混应用是指一种包裹webview的应用,原生应用于网页内容交互性的应用

重要的时安排皮毛的跨平台的,何为跨平台,意思就是可以针对不同的平台用一套api来编写测试用例

环境搭建


环境搭建

  然后就是一些appium的安装

Appium库安装

# 安装pip install Appium-Python-Client# 检验是否成功piplist


Appium使用

①打开手机应用

②打开Appium

③创建一个python项目,并创建一个文件

④将下面代码复制到文件中

⑤获取当前应用包名和启动activity并修改文件


 脚本内启动其他app

driver.start_activity(appPackage,appActivity)

关闭app

driver.close_app() # 关闭当前操作的app,不会关闭驱动对象

关闭驱动对象    

driver.quit() # 关闭驱动对象,同时关闭所有关联的app

App基础操作API

完成app自动化需要一些基础条件的支持,本节将讲解APP初始化API

前置代码

# server 启动参数desired_caps={}desired_caps['platformName']='Android'desired_caps['platformVersion']='5.1'desired_caps['deviceName']='192.168.56.101:5555'desired_caps['appPackage']='com.android.settings'desired_caps['appActivity']='.Settings'desired_caps['unicodeKeyboard']=Truedesired_caps['resetKeyboard']=True# 声明driver对象driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)

安装APK到手机

driver.install_app(app_path)

 手机中移除APP

driver.remove_app(app_id)

判断APP是否已安装

driver.is_app_installed(bundle_id)


importbase64data=str(base64.b64encode(data.encode('utf-8')),'utf-8')driver.push_file(path,data)参数:


从手机中拉取文件

importbase64data=driver.pull_file(path)# 返回数据为base64编码print(str(base64.b64decode(data),'utf-8'))# base64解码


获取当前屏幕内元素结构

driver.page_source

手机控件查看工具uiautomatorviewer

如何使用

进入SDK目录下的tools目录,打开uiautomatorviewer

电脑连接真机或打开android模拟器

启动待测试app

点击uiautomatorviewer的左上角Device Screenshot,会生成app当前页面的UI控件截图


APP元素定位操作

手工测试主要通过可见按钮操作,而自动化是通过元素进行交互操作。

元素的基本定位基于当前屏幕范围内展示的可见元素。


通过id定位

方法:find_element_by_id(id_value) # id_value:为元素的id属性值

业务场景:

1. 进入设置页面

2. 通过ID定位方式点击搜索按钮


通过class定位

方法:find_element_by_class_name(class_value) # class_value:为元素的class属性值

业务场景:

1. 进入设置页面

2. 点击搜索按钮

3. 通过class定位方式点击输入框的返回按钮

定位一组元素,注意element -> elements

应用场景为元素值重复,无法通过元素属性直接定位到某个元素,只能通过elements方式来选择,返回一个定位对象的列表

获取元素的文本内容

方法: text

业务场景:

1.进入设置

2.获取所有元素class属性为“android.widget.TextView”的文本内容


获取元素在屏幕上的坐标

方法:location

业务场景:

1.进入设置页面

2.获取搜索按钮在屏幕的坐标位置

获取app包名和启动名

获取包名方法:current_package

获取启动名:current_activity

业务场景:

1.启动设置

2.获取包名和启动名


应用置于后台事件

APP放置后台,模拟热启动

方法:background_app(seconds)

参数:

1.seconds:停留在后台的时间,单位:秒

业务场景:

1.进入设置页

2.将APP置于后台5s

APP模拟手势高级操作

TouchAction是AppiumDriver的辅助类,主要针对手势操作,比如滑动、长按、拖动等,原理是将一系列的动作放在一个链条中发送到服务器,服务器接受到该链条后,解析各个动作,逐个执行。


手指轻敲操作

模拟手指轻敲一下屏幕操作

方法:tap(element=None, x=None, y=None)

方法:perform() # 发送命令到服务器执行操作

参数:

1.element:被定位到的元素

2.x:相对于元素左上角的坐标,通常会使用元素的X轴坐标

3.y:通常会使用元素的Y轴坐标

业务场景:

1.进入设置

2.点击WLAN选项


手指按操作

模拟手指按下屏幕,按就要对应着离开.

方法:press(el=None, x=None, y=None)

方法:release() # 结束动作,手指离开屏幕

参数:

1.element:被定位到的元素

2.x:通常会使用元素的X轴坐标

3.y:通常会使用元素的Y轴坐标

业务场景:

1.进入设置

2.点击WLAN选项



等待操作

方法:wait(ms=0)

参数:

ms:暂停的毫秒数

业务场景:

1.进入设置

2.点击WLAN选项

3.长按WiredSSID选项5秒


手指长按操作

模拟手机按下屏幕一段时间,按就要对应着离开.

方法:long_press(el=None, x=None, y=None, duration=1000)

参数:

1.element:被定位到的元素

2.x:通常会使用元素的X轴坐标

3.y:通常会使用元素的Y轴坐标

4.duration:持续时间,默认为1000ms

业务场景:

1.进入设置

2.点击WLAN选项

3.长按WiredSSID选项5秒


手指移动操作

模拟手机的滑动操作

方法:move_to(el=None, x=None, y=None)

参数:

1.el:定位的元素

2.x:相对于前一个元素的X轴偏移量

3.y:相对于前一个元素的Y轴偏移量

业务场景1:

1.进入设置

2.向上滑动屏幕


手机操作API

针对手机的一些常用设置功能进行操作.


获取手机时间

方法:device——time

代码实现:

获取当前手机的时间

print(driver.drvier——time)

执行结果

web Dec27 02:52:45: EST 2017


获取手机的宽高

获取手机的宽高,可以根据宽高做一些坐标的操作

方法:get_window_size()

代码实现:

print(driver.get_window_size())

{‘height:800’,‘width’:400}

发送键到设备

模拟系统值得操作,比如操作home键音量键,返回键

参数:

keycode 发送给设备的关键的代码

metaste 关于被发送的关键代码的源信息,一般为默认值

业务场景:

打开设置

按多次音量键加键

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,817评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,329评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,354评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,498评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,600评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,829评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,979评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,722评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,189评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,519评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,654评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,940评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,762评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,993评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,382评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,543评论 2 349

推荐阅读更多精彩内容

  • 一、Appium介绍 Appium是一个移动端的自动化框架,可用于测试原生应用、移动网页应用和混合型应用,且是跨平...
    Anwfly阅读 2,677评论 2 7
  • 一、Appium介绍 Appium是一个移动端的自动化框架,可用于测试原生应用、移动网页应用和混合型应用,且是跨平...
    九樱MOL阅读 948评论 0 0
  • 一、Appium介绍 Appium是一个移动端的自动化框架,可用于测试原生应用、移动网页应用和混合型应用,且是跨平...
    遗憾与人海中阅读 309评论 0 0
  • 知识概览 一、 移动端测试是什么 移动端测试是指对移动应用进行的测试,即实体的特性满足需求的程度。 二、 移动端测...
    __65a0阅读 1,868评论 1 10
  • 移动端测试 知识概览 一、 移动端测试是什么 移动端测试是指对移动应用进行的测试,即实体的特性满足需求的程度。 二...
    G_eebd阅读 1,367评论 0 0