前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >提高Android自动化测试稳定性的方法(二)

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

作者头像
岛哥的质量效能笔记
发布2021-08-18 15:13:14
4180
发布2021-08-18 15:13:14
举报
文章被收录于专栏:岛哥的质量效能笔记

阅读本文大约需要1分钟。

背景

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

解锁屏幕

在uiautomator2.0中有两个方法:

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

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

定义解锁Activity

代码语言:javascript
复制
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

代码语言:javascript
复制
        <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中申请权限

代码语言:javascript
复制
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

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

代码语言:javascript
复制
adb shell am start -a com.android.jarvis.action.ACTION_IDENTIFY

分享:最近看了全球软件质量&效能大会QECon的演讲,感觉内容还是不错的,想要PPT的可以关注本公众号,然后输入"QECon"不区分大小写,获取2021年QECon大会的全场PPT

些道理,遇见些有趣的事 —— 离岛

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 岛哥的质量效能笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档