iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >移动设备Android平台自动化测试方法
  • 303
分享到

移动设备Android平台自动化测试方法

自动自动化测试方法方法自动化测试测试Android 2022-06-06 13:06:25 303人浏览 独家记忆
摘要

   在编写Android自动化测试用例的时候,可能会碰到这样的情况,在一个Android版本的模拟器上运行的好好的测试用例,在另一个版本的Android模拟器上

   在编写Android自动化测试用例的时候,可能会碰到这样的情况,在一个Android版本的模拟器上运行的好好的测试用例,在另一个版本的Android模拟器上运行不正常了。基本症状是,在测试代码里获取一个View的实例,然后通过robotium的click函数点击它:

  View view = ... // 在代码里获取要点击的View的实例

  solo.click(view); // 然后点击它。

  如果是在模拟器上执行的话,因为创建模拟器的时候可以指定皮肤,模拟器也有不同的版本,可能你会发现在一个皮肤(或者模拟器版本)上运行的好好的,在另一个皮肤(或版本)上发生点不到控件的问题。

  发生这种情况,主要是由于Android支持多种屏幕造成的,不同屏幕的像素密度有可能不一样,而这会导致同样(像素)大小的控件,在低密度屏上看起来要大一些,而在高密度屏上看起来要小一些,如下图所示:

  而有些程序,为了避免发生类似上面的情况,会采用密度无关像素的方式指定控件的大小 – 即使用dp单位。因为dp单位采用中等密度屏幕的每英寸的像素个数作为基线,当程序在高密度或低密度屏上运行时,android系统会自动去根据基线来计算并缩放控件,以便相同的控件在不同密度的屏幕上显示的物理大小是一致的,如下图所示:

   这样其实给咱们自动化测试带来了一些问题,在Android官方文档里举了一个例子-当然是开发方面的例子:假如一个程序设置了手指在屏幕上至少移动了16个像素才算是滑动,那么在基准屏上,手指需要移动 16像素 / 160 dpi,也是十分之一英寸(或2.5毫米);而如果在高密度屏上面,用户只需要移动16像素 / 240 dpi,也是十五分之一英寸(或1.7毫米)。高密度屏上需要移动的距离远比低密度屏短,给用户的感觉是高密度屏上对手势更敏感些。

  放在自动化测试的点击上面,针对使用DPI指定大小的控件,由于在显示的时候会根据屏幕的密度来缩放控件,在模拟点击操作的时候,因为robotium是复用instrumentation类来向android系统发送点击操作这个消息,消息里面自带了点击位置的x, y坐标。Robotium里面点击控件的逻辑是这样的:

  1. 首先获取要点击的控件View的实例。

  2. 通过View. getLocationOnScreen函数获取控件左上角在屏幕上的坐标,坐标的单位是像素。

  3. 通过View.getWidth和View.getHeight函数获取控件的大小。

  4. 一般来说是点控件的中间位置,这个位置由控件的左上角的坐标和控件大小计算得出,这个单位也是像素。

  5. 原来robotium得到点击位置的x,y坐标之后,直接发送android消息了:

  1: public void clickOnScreen(float x, float y) {

  2: long downTime = SystemClock.uptimeMillis();

  3: long eventTime = SystemClock.uptimeMillis();

  4: MotionEvent event = MotionEvent.obtain(downTime, eventTime,

  5: MotionEvent.ACTION_DOWN, x, y, 0);

  6: MotionEvent event2 = MotionEvent.obtain(downTime, eventTime,

  7: MotionEvent.ACTION_UP, x, y, 0);

  8: try{

  9: inst.sendPointerSync(event);

  10: inst.sendPointerSync(event2);

  11: sleeper.sleep(MINISLEEP);

  12: }catch(SecurityException e){

  13: Assert.assertTrue("Click can not be completed!", false);

  14: }

  15: }

  由于所有的坐标位置都是以像素计算的,没有考虑到缩放的情形,所以在不同密度的屏幕上会发生点击错位的情况。

  为了修复这个问题,解决方案是获取当前屏幕的密度和对dpi计算大小的控件的缩放比例,然后恢复原始的比例再发送点击消息:

  1: // 需要传递要点击的控件View的实例

  2: public void clickOnScreen(View view, boolean lonGClick, int time) {

  3: if(view == null)

  4: Assert.assertTrue("View is null and can therefore not be clicked!", false);

  5: int[] xy = new int[2];

  6:

  7: // 获取控件在屏幕上的位置 – 如果是dpi计算大小的控件,这个位置是缩放后的位置

  8: view.getLocationOnScreen(xy);

  9:

  10: // 获取控件的大小,并且计算出点击的控件中点位置

  11: final int top = view.getTop();

  12: final int viewWidth = view.getWidth();

  13: final int viewHeight = view.getHeight();

  14: float x = xy[0] + (viewWidth / 2.0f);

  15: float y = xy[1] + (viewHeight / 2.0f);

  16:

  17: // 计算缩放比例,将要点击的x, y坐标恢复到缩放前的情况。

  18: Activity activity = activityUtils.getCurrentActivity();

  19: DisplayMetrics rdm = activity.getResources().getDisplayMetrics();

  20: DisplayMetrics wdm = new DisplayMetrics();

  21: activity.getWindowManager().getDefaultDisplay().getMetrics(wdm);

  22: x *= wdm.scaledDensity / rdm.scaledDensity;

  23: y *= wdm.scaledDensity / rdm.scaledDensity;

  24:

  25: // 后再发送Android点击消息

  26: if (longClick)

  27: clickLonGonScreen(x, y, time);

  28: else

  29: clickOnScreen(x, y);

  30: }


--结束END--

本文标题: 移动设备Android平台自动化测试方法

本文链接: http://www.lsjlt.com/news/28827.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android移动端自动化测试,Sele
    Android移动端自动化测试,Selenium3自动化测试,Python3 测试,Java接口测试21套高级软件测试,性能测试,功能测试,自动化测试,接口测试,移动端测试,手机测试,WEB测试,***测试,测试用例设计,黑盒测试,白盒测试...
    99+
    2023-01-31
    测试 Android Sele
  • 自学移动端(APP)自动化测试
            国庆已经过去了,新的一周已经开始了,各地疫情又开始出现复发了,我们能做的就是做好个人防护、去哪报备、到哪扫码亮码、主动做核酸、随时做好家里存储至少一周的食物,拒绝过度防疫,拒绝过度恐慌,拒绝过度焦虑。有工作的最起码还有钱能到...
    99+
    2023-09-12
    web app 自动化 android ios harmonyos
  • python和Appium移动端多设备自动化测试框架实现
    目录前言:一、流程图二、appium服务三、连接测试设备四、元素封装五、运行前言: 本篇文章主要介绍基于pytest和Appium框架,支持Android和iOS功能自动化的测试框架...
    99+
    2024-04-02
  • Android自动化测试的方法是什么
    本篇内容介绍了“Android自动化测试的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!自动化测试自动化测试指软件测试的自动化,在...
    99+
    2023-06-05
  • 移动端自动化测试框架搭建
    搭建框架的几点思考: 需要框架实现什么功能 前期需要做数据与业务分离,方便维护 测试用例集管理要方便,便于异常时重新Run单条用例 用例设计需要尽可能简单,多提供公共方法     目前设计框架如下图:    CommonLibr...
    99+
    2023-01-30
    框架 测试
  • 使用Django+Pytest搭建在线自动化测试平台
    目录一、测试平台:二、搭建过程2.1 使用django搭建一个web系统2.2 搭建测试框架三、平台如何管理总结一、测试平台: 解决分散用例执行方式,提供统一测试用例执行过程、用例管...
    99+
    2024-04-02
  • GitLab的自动测试和自动化测试报告生成方法
    GitLab的自动测试和自动化测试报告生成方法,需要具体代码示例随着软件开发项目的不断增加,测试变得越来越重要,而自动化测试成为了一种必不可少的手段。GitLab作为一个流行的代码托管平台,提供了许多工具和功能来支持自动测试和自动化测试报告...
    99+
    2023-10-22
    gitlab 自动测试 自动化测试报告
  • android自动化测试怎么做
    Android自动化测试可以通过以下几个步骤来进行:1. 选择测试框架:Android提供了多个测试框架,如JUnit、Espres...
    99+
    2023-10-07
    android
  • selenium自动化测试简单准备
    目录下载驱动器chrome版本查看基本函数练习一(简单网页注册)练习二练习三下载驱动器 http://chromedriver.storage.googleapis.com/inde...
    99+
    2024-04-02
  • Python之Appium 2自动化测试(Android篇)
    一、环境搭建及准备工作 Appium 2 环境搭建 请参考另一篇文章: Windows系统搭建Appium 2 和 Appium Inspector 环境 安装 Appium-Python-Client,版本要求3.0及以上 和 Selen...
    99+
    2023-12-23
    python appium android
  • android界面自动化测试工具monkeyrunner
    MonkeyRunner是一个Android平台的界面自动化测试工具,它基于Python语言,可以通过编写脚本来模拟用户操作。Mon...
    99+
    2023-09-23
    Android
  • 移动开发中自动化测试的示例分析
    小编给大家分享一下移动开发中自动化测试的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、自动化测试的概念自动化测试是把以人为驱动的测试行为转化为机器执行...
    99+
    2023-06-04
  • python+pytest自动化测试函数测试类测试方法的封装
    目录前言一、测试用例封装的一般规则三、测试类/方法的封装四、示例代码总结前言 今天呢,笔者想和大家聊聊python+pytest接口自动化中将代码进行封装,只有将测试代码进行封装,才...
    99+
    2024-04-02
  • Android自动化测试处理各种弹窗的操作方法
    在UI自动化测试中弹窗是影响自动化用例稳定性的一大因素,如何方便快捷的处理各种情况下的弹窗,是搞UI自动化测试必须要面临的问题. 弹窗的种类: 安装APP时的系统弹窗 此类弹窗一般有...
    99+
    2024-04-02
  • PHP中封装性的自动化测试方法
    摘要:自动化测试是一个重要的软件开发实践,它可以提高测试的效率和准确性。在PHP开发中,封装性是实现自动化测试的关键。本文将介绍一些PHP中封装性的自动化测试方法,并给出具体的代码示例。测试框架的选择在PHP开发中,有许多流行的测试框架可供...
    99+
    2023-10-21
    PHP 自动化测试 封装性测试方法 PHP 测试框架
  • Go 函数单元测试的自动化方法
    在 go 中,可以通过以下方法自动化单元测试:使用 go test 命令,提供灵活的测试运行和管理选项。集成第三方测试框架,获得额外的功能和灵活性。利用持续集成工具,在每次代码更改时自动...
    99+
    2024-05-03
    自动化 单元测试 标准库
  • golang自动化运维测试的方法有哪些
    Rate limit reached for gpt-3.5-turbo in organization org-68Lqb4iD2...
    99+
    2023-10-18
    golang
  • Java对接ansible自动运维化平台方式
    目录Java对接ansible自动运维化平台实现文件采集分发场景说明及ansible yum安装Java代码实现文件分发POI创建文件工具类创建主机组配置文件实现文件分发文件采集总结...
    99+
    2023-05-14
    Java对接ansible 自动运维化平台 Java ansible
  • Android+Appium自动化测试环境搭建及实操
    1、Appium简介1.1 Appium概念1.2 Appium工作原理 2、Appium Server环境搭建2.1 Java JDK2.1.1 下载JDK2.1.2 运行exe安装...
    99+
    2023-10-24
    appium android 自动化测试 环境搭建 调试
  • 如何使用appium做Android手机自动化测试
    这篇文章给大家介绍如何使用appium做Android手机自动化测试,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Appium这个听起来既生疏也熟悉的自动化测试工具,比起原生的UiAutomator可能是异常的不起眼,...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作