提高Android自动化测试稳定性的方法(二)

简介: 在Android自动化测试执行过程中,经常会由于这样或那样的原因导致手机屏幕被锁定从而导致测试失败,如果你使用的是Appium或者Airtest这样的框架,框架中自带了点亮并解锁屏幕的API,但如果是使用的自研框架或者是u2框架,就需要自己去实现这个功能了。

解锁屏幕


在uiautomator2.0中有两个方法:

  • isScreenOn:只能判断屏幕是亮着的还是关着的,屏幕锁屏时 isScreenOn 还是会返回 true;
  • wakeUp:只能把屏幕唤醒点亮并不能解锁屏幕;


以上两个方法并不能实现解锁屏幕功能,想要实现解锁屏幕还是需要借助辅助APP,Appium和Airtest框架都是通过自带的辅助APP实现解锁屏幕功能的。


定义解锁Activity

package com.android.jarvis
import android.app.Activity
import android.app.KeyguardManager
import android.os.Bundle
import androidx.core.view.accessibility.AccessibilityEventCompat
class IdentityActivity : Activity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        ensureVisibility()
    }
    private fun ensureVisibility() {
        val window = window
        window.addFlags(2097152)
        window.addFlags(AccessibilityEventCompat.TYPE_WINDOWS_CHANGED)
        unlock()
        val params = window.attributes
        params.screenBrightness = 0.2f
        window.attributes = params
    }
    private fun unlock() {
        (getSystemService("keyguard") as KeyguardManager).newKeyguardLock("InputService/Unlock")
            .disableKeyguard()
    }
}

在AndroidManifest.xml中注册Activity

 <activity
            android:name=".IdentityActivity"
            android:exported="true"
            android:finishOnTaskLaunch="true"
            android:stateNotNeeded="true"
            android:screenOrientation="portrait"
            android:excludeFromRecents="true"
            android:noHistory="true">
            <intent-filter>
                <action android:name="com.android.jarvis.action.ACTION_IDENTIFY" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

在AndroidManifest.xml中申请权限

<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

执行下面的命令即可实现解锁屏幕:

adb shell am start -a com.android.jarvis.action.ACTION_IDENTIFY
相关文章
|
11天前
|
安全 数据可视化 前端开发
【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(2)· 正交表 · 场景设计 · 常见案例练习
【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(2)· 正交表 · 场景设计 · 常见案例练习
32 0
|
11天前
|
XML 存储 测试技术
深入理解自动化测试中的数据驱动方法
【5月更文挑战第11天】 在软件测试领域,数据驱动测试(DDT)是一种高效的测试策略,它允许测试人员通过外部数据源控制测试用例的输入和输出。这种方法促进了测试用例的参数化,并提高了测试的灵活性和可维护性。本文将探讨数据驱动测试的核心概念、实施步骤以及使用Python进行数据驱动测试的实践案例,旨在为读者提供一种结构化的方法来设计和执行复杂的测试场景。
|
1天前
|
XML 敏捷开发 存储
深入理解自动化测试中的数据驱动方法
【5月更文挑战第25天】 在现代软件开发过程中,自动化测试是确保产品质量和加速交付速度的关键手段。本文将探讨数据驱动测试(DDT)方法的核心概念、实施策略以及它如何提升自动化测试的灵活性和效率。不同于常规摘要,本文将通过实际案例分析,揭示数据驱动方法在不同测试场景中的应用,并讨论其对测试覆盖率和可靠性的影响。
|
2天前
|
Android开发 数据安全/隐私保护 iOS开发
ios和安卓测试包发布网站http://fir.im的注册与常用功能
ios和安卓测试包发布网站http://fir.im的注册与常用功能
9 0
ios和安卓测试包发布网站http://fir.im的注册与常用功能
|
8天前
|
存储 XML 测试技术
深入理解自动化测试中的数据驱动方法
【5月更文挑战第17天】 在软件测试领域,数据驱动测试(DDT)是一种高效的测试方法,它允许测试人员通过外部数据源来控制测试用例的执行。这种方法的核心在于将测试逻辑与测试数据分离,使得测试案例可以简单地通过改变输入数据集来扩展和复用。本文旨在探讨数据驱动测试的原理、实施策略及其在实际项目中的应用效果,以期为读者提供一种提高测试效率和质量的有效手段。
|
8天前
|
数据采集 Java 开发工具
一文2500字从0到1教你搭建Android自动化python+appium环境
一文2500字从0到1教你搭建Android自动化python+appium环境
一文2500字从0到1教你搭建Android自动化python+appium环境
|
10天前
|
Android开发
Android获取蓝牙设备列表的方法
Android获取蓝牙设备列表的方法
17 5
|
10天前
|
Android开发
Android获取当前系统日期和时间的三种方法
Android获取当前系统日期和时间的三种方法
24 4
|
10天前
|
API 开发工具 Android开发
调用Android原生@SystemApi、@Hide方法
调用Android原生@SystemApi、@Hide方法
14 1
|
11天前
|
人工智能 测试技术 数据处理
【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(1)等价类划分法、边界值法、判定表法
【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(1)等价类划分法、边界值法、判定表法
10 0

热门文章

最新文章