相关动态
1-移动端测试 - appium usage
2025-01-01 02:33

1-移动端测试 - appium usage

  • 返回测试目录
  • 返回随笔目录

appium的操作跟selenium操作差不多,这里简要聊聊。

我们通过Python代码打开APP(此时appium是启动并监听4723端口),来到首页,然后使用uiautomatorviewer工具获取(这时要结束appium连接)页面结构。


真巧!我们发现了按钮的id是。那么我们就可以直接通过id定位,然后点击就完了。


如果你学过selenium,你会发现,selenium和appium的用法很像。所以,代码就无需多言了,根据标签定位,然后点击。

class属性定位就是通过uiautomatorviewer工具查看到的class属性。


由于class的属性的特性,一般都是有多个标签引用,所以,我们不能上来就用这种形式,当然这种是默认从多个中选择第一个,但我们不能保证我们想要的标签它正好处于第一个。

所以,我们应该拿到class属性,如上例中,先找多个,看看它这个页面中到底找到了多少个(列表的形式),然后根据其下标定位即可。

上例中恰好页面中只有一个标签,但由于是列表的形式,所以我们取0。

其它形式的定位就不多扯,可以参考selenium。

所谓的层级定位,有相对定位的意思,也就是根据儿子找他爹,找他爹的爹;根据父亲找儿子;各种找就完了。

这是一种定位思想。使用不同的定位方法相结合,能轻松解决问题。

如上图,这个页面中有很多的class属性为的标签,也有很多class属性为的标签。但标签恰好有id,那么我们可以根据这个id定位到其子标签。说白了就是先找个好定位的点,这就进一步缩小了我们的目标,然后在这个范围内,再找最终的目标。一步一步缩小范围。



首先,你可能说,咱们appium用的好好地,怎么突然用上了UIautomatorviewer了?因为啊,appium更擅长于xpath定位!其他的UIautomatorviewer更胜一筹。所以,相结合着来使用更好。

说起xpath,满满都是泪,记性不好的我,压根记不住那些规则和符号(这难道就是我正则不好的原因么,手动滑稽)。

在基本属性定位这里,我们有几种定位方式。

举的例子还是以京东阅读APP的跳过起始页广告为例。


不变的代码先摘出来。

通过text文本定位

//*[@text=“文本”]


通过id定位

//*[@resource-id='id属性']


通过class定位

如果class是唯一的话:

//class属性


如果是多个:

//*[@class='class属性']



通过爹爹找儿子


注意:如果父节点下有多个子节点的话,可以通过数组下标来确定子节点的位置,xpath是从1开始数的


通过儿子找爹爹


再来看个parent语法的:


注意,通过子节点找父节点的,parent后都使用class属性。

最后再来看一个跟uiautomatorviewer不一样的定位方式——android_uiautomator定位。

android_uiautomator提供的常用方法如下:

  • 通过text文本定位语法:
  • 模糊匹配:,一般应用于文本较长中。
  • 匹配以指定字符开头:
  • 正则匹配:
  • resourceId匹配:,这个鬼东西其实跟id一样,但不保证唯一性!
  • class定位:,页面上的class属性一般不唯一,多半用在复数定位时候。比如通过class属性定位'排行'这个按钮下标就是2。


很明显我们要考虑一个问题,我们遇到输入框时,如何往里面输入值?难道真的要模拟拼音输入?那岂不是要疯?

那你可能会说,我们有send_keys呀!果然,英雄出少年,你说对了,我们有send_keys解决问题。


如果你运行了上述代码,会发现,除了无法输入值之外,其他都好使!

那原因就是,我们需要屏蔽键盘,然后将我们想要输入的值send进去就OK啦,这用到两个参数:

  • unicodeKeyboard:使用Unicode编码方式发送字符串。
  • resetKeyboard:屏蔽键盘。

将这两个值放到请求的字典中即可。


这么着是不是就好使了。

要想在appium中使用等待机制怎么办?好吧,我们借助selenium提供的等待机制来完成显式等待。隐式等待就是用appium自带的吧。

https://www.cnblogs.com/Neeo/articles/11005164.html




这玩意儿跟selenium的截图功能一样,没啥好聊的了。

首先要知道,手机屏幕的X、Y坐标定位一个像素点。并且原点是从左上角开始的。

来看相关参数:


duration是滑动屏幕持续的时间,时间越短速度越快。默认为None可不填,一般设置500-1000毫秒比较合适。

获取屏幕大小

由于每个手机屏幕的分辨率不一样,所以同一个元素在不同手机上的坐标也是不一样的,滑动的时候坐标不能写死了。可以先获取屏幕的宽和高,再通过比例去计算。


封装滑动方法

参数分别是:

  • 驱动driver。
  • 滑动时间。
  • 滑动次数。


源码:


TouchAction里面有这几个动作:

  • 触摸 (tap)
  • 短按 (press)
  • 长按 (long_press)
  • 等待 (wait)
  • 移动到 (moveTo)
  • 释放 (release)
  • 执行 (perform)

九宫格示例:点击指定图标

这里用到了了,你需要将它安装到模拟器中去。

先能连上这个apk。


解决问题的思路是,先获取元素坐标位置,再获取元素大小,然后切割图片,分别计算出每个点的坐标。

但观察上图,九宫格上下边距距离较大,我们为了方便,手动各添加一排假图标(黄色)。我们要拿到整个屏幕的大小:


有了宽和高,我们就来定位一下元素1的位置。

元素1的坐标:

  • x轴,将x轴分6份取第1份,也就是
  • y轴,将y轴分9份取第3份。也就是

也就是说坐标1,它位于x轴的第1份,y轴的第3份。

经这么分割,我们就可以尝试点击它了,这里使用短按方法:


九宫格示例:按照从小到大的顺序点击所有图标


这个根据之前的图,不难计算它的位置。但是代码有些冗余啊.....

如果你观察细致的话,整个点击过程是有一定的规律的,所以,我们可以做些优化:


这个示例也可以使用tap来完成:


tap是模拟手指点击,一般页面上元素 的语法有两个参数,第一个是positions,是list类型最多五个点,duration是持续时间,单位毫秒。


他是有弊端的:通过坐标定位是元素定位的下下下策,实在没办法才用这个,另外如果换了手机分辨率,这个坐标就不能写死了,得算出所在屏幕的比例。

九宫格示例:Z形滑动

我们能点击了,是不是也就是能滑动了?尝试一下!


效果如下:

多点触摸对象是触摸动作的集合。
多点触控手势只有两种方法,即添加和执行。
add用于添加另一个触摸操作到多点触摸。
当perform执行被调用时,添加到多点触摸的所有触摸动作都被发送到Appium,并执行,就像它们同时发生一样。appium首先执行所有触摸动作的第一个事件,然后执行第二个,等等。

来个百度地图的示例,首先你要安装:

思路就是主要就是两个点(A, D),然后他们各自(同时)滑动到(B,C),只是让这两件事看起来是同时一样。

下面的示例演示这一过程。

为了简单,我们让x保持不变,改变y的坐标达到这一目的。

    以上就是本篇文章【1-移动端测试 - appium usage】的全部内容了,欢迎阅览 ! 文章地址:http://sjzytwl.xhstdz.com/news/12758.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 物流园资讯移动站 http://mip.xhstdz.com/ , 查看更多   
最新文章
铁犁盘酒 | 如何让年轻人“上头”又“上心”?
中国海关总署于2025年4月10日起对美全面加征84%关税后,进口商品价格将显著上涨,促使国内消费市场发生变化。一方面,进口商品的
核桃软硬件编程手机版 V1.2.21 安卓版scratch手机版「核桃软硬件编程手机版 V1.2.21 安卓版」
  核桃软硬件编程手机版是核桃编程官方推出的编程闯关挑战应用,这里有沉浸式的剧情闯关体验,原创的趣味卡通动画,深度融合的
甘肃出台14项住房公积金新举措 购买自住住房提取范围扩至配偶和父母子女
奔流新闻讯(记者欧阳海杰 实习生 宋夏楠)为进一步支持住房消费,有效发挥住房公积金保障作用,自4月1日起,甘肃省住房资金管理
详细步骤教你如何为苹果手机设置密码锁屏苹果手机怎么设置密码锁屏「详细步骤教你如何为苹果手机设置密码锁屏」
数字密码:用户可以设置一个4位或6位的数字密码。面容识别(FaceID):适用于支持Face ID的机型,用户可以通过面部识别解锁手机
手机Root权限详解:开启步骤、风险与操作建议手机root教程「手机Root权限详解:开启步骤、风险与操作建议」
手机怎么开Root?详细步骤解析大家好,今天我们来聊聊一个对于很多手机用户来说都非常关心的话题——如何开启手机的Root权限。Ro
两岸青少年以动漫为媒在沪交流
参考消息网4月8日报道 据台湾联合新闻网4月7日报道,首届“同契之光”海峡两岸青少年动漫研习营暨优秀作品展5日在上海举行开幕仪
电脑反控手机的操作教程电脑操作手机「电脑反控手机的操作教程」
金舟投屏是一款支持将安卓(Android)和苹果(IOS)手机投屏到Windows系统电脑上的投屏软件。安卓手机支持快捷投屏、扫码投屏、
摩尔庄园手机版 v2.4.23111604S官方版摩尔庄园手机版「摩尔庄园手机版 v2.4.23111604S官方版」
小伙伴们还记得自己玩过的《摩尔庄园》吗?时隔多年也是推出了摩尔庄园手机版!作为一款3D养成类游戏,游戏也是以3D呈现在了小伙
手机副卡和主卡有什么区别手机副卡「手机副卡和主卡有什么区别」
手机副卡和主卡的区别有:1、主卡是手机的主要通信卡,而副卡无法直接使用进行通信;2、主卡是平时使用的运营商提供的卡,而副卡
这笔补贴,遂昌这些人可以申领了!
大龄领取失业保险金人员养老保险缴费补贴政策来了这笔钱,记得申领近日,记者从市人力社保局下属市就业服务中心了解到,根据人社