新的获取APP元素定位方法的实践——不依赖GUI工具

获取元素定位方式,是UI自动化测试过程中最重要的一步,如果无法获取有效的定位方式,其它操作将无从进行。

通常在使用Appium框架进行自动化测试时,我们依赖GUI工具Appium Inspector、UIAutomatorViewer来获取元素属性,经过分析验证,从而得到正确的定位方式。

使用GUI工具获取元素定位

美好的想法

安装Appium环境,并能正常运行demo;

安装appium GUI客户端;

使用Appium Inspector或者UIAutomatorViewer获取Android版本App元素属性;

使用Appium Inspector获取IOS版本App 元素属性;

分析元素属性,得到定位方式;

将定位方式添加到测试脚本,运行测试。

如果一切顺利,重复以上过程,元素定位自然不是问题。然而,理想很丰满,现实很骨感,过程往往是非常痛苦的。

痛苦的过程

(安装过程的痛处,不是本文重点,在这就不多说了)

用Appium Inspector在真机上运行并定位元素的时候,不管App有没有安装,都会重新安装,而Appium安装启动App的过程是非常耗时的;

使用Linux系统开发时,由于Appium Inspector无Linux版本,只能通过UIAutomatorViewer工具来获取Android页面元素属性,然而,有的元素就是那么任性:期望的属性都没有!想通过name和id定位是行不通了。

有的元素是有text和id属性的,不过中文汉字显示成了“?”

这样的话,需要先解决了这个编码问题。

打开Appium Inspector,无奈报错“Could Not Launch Appium Inspector”,经过检查,app path以及关键参数已经设置,还是无法打开。所以想要通过Appium Inspector获取元素属性,只能上网搜索一番,先解决了这个问题。

在解决了Appium Inspector无法启动问题以及UIAutomatorViewer编码问题后,对于既没有name,也没有ID属性的元素,只能通过分析,得到xpath,添加进脚本试用,确认定位信息是否准确。而这时,就不可避免的遇到NoSuchElement错误。

如果通过分析元素属性得到的xpath无法准确定位,只能采用万能的page source方法,根据source继续分析,得到定位方式,再来验证。

@property

defpage_source(self):

"""

Gets the source of the current page.

:Usage:

driver.page_source

"""returnself.execute(Command.GET_PAGE_SOURCE)['value']

以上列举了一些使用GUI工具Appium Inspector和UIAutomatorViewer获取元素定位方法的一些问题,虽说问题都能一一被解决,但花费的时间以及不断重复获取精确定位的过程,让人不能忍,如果有人真不幸的一一遇到了,那么使用新的方法来获取定位方式,便迫在眉睫了。

新方法的实践

1、期望的获取方式

在App指定的界面,解析页面并获取所有元素的定位方式

对分析到的元素定位方式进行验证

确认定位信息无误后添加进自动化脚本中

2、解决思路

配置Desired Capabilities,并启动Appium Server

运行App并调整到指定界面

通过source = driver.page_source获取页面source

分析页面source,得到该页面所有元素的定位方法,可根据ID>name>text>xpath的顺序

指定得到的定位元素方式,执行click操作,观察交互是否正确

将正确的定位方式添加进测试脚本

3、如何实现(主要代码)

如何解析source

Android也是同样的思路,直接获取属性clickable为True的元素。

对得到的定位方式进行验证

4、以demo为例说明

打开app后界面

根据分析得到的定位方式

选择11,验证定位信息是否正确

执行click操作,跳转到buttons页面,说明定位信息准确,可添加进脚本

5、该方法解决的主要问题

Appium Inspector以及UIAutimatorViewer工具,因环境问题带来的困扰;

UIAutimatorViewer无法直接获取xpath的不足;

获取定位方式后可以直接判断是否准确。

6、该方法带来的几个主要问题以及改善

以上是通过xpath得到的定位信息,可以根据需要进行修改,建议ID优先;

对于无明显特征的定位信息,无法判断属于页面哪个元素,需要根据元素类型如button或者页面元素显示顺序,来猜测是哪个元素。如果能与开发约定元素id,相信获取元素定位,将事半功倍。

小结

以上主要根据使用工具获取元素定位方式的各种痛处,探索了一种新的获取元素定位的思路,希望能通过对该思路不断的优化、改进和完善,解决获取定位的烦恼,从而高效的完成自动化测试工作。

本文作者:李吉兵(点融黑帮),现任点融网测试开发工程师,主要从事App自动化测试,测试框架以及工具开发工作。

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

推荐阅读更多精彩内容

  • Appium和它的设计思想 什么是Appium? 1、appium是开源的移动端自动化测试框架; 2、appium...
    RmondJone阅读 4,433评论 2 7
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,378评论 25 707
  • 前言:本篇文章并非我的原创,而是翻译自英文原著。这里的每一句话我都仔细揣摩过并且加以实践,着实花了一些时间,在此记...
    顾顾314阅读 21,913评论 0 19
  • 如约地开启了九月的光阴故事,我们昂扬奋进地重返校园,书写奋进路上又一段成长卷轴!九月一日,我们多数人守候在电视机前...
    嫣容浅笑阅读 366评论 1 4
  • 标签的属性 html 代码: //audio和video都可以通过JS获取对象,JS通过id获取video和aud...
    vikang阅读 3,175评论 0 2