其他分享
首页 > 其他分享> > android – 如何确定软键盘是否显示在屏幕上 – 使用monkeyrunner时

android – 如何确定软键盘是否显示在屏幕上 – 使用monkeyrunner时

作者:互联网

我试图使用monkeyrunner自动化几个屏幕点击和条目(使用AndroidViewClient)

每当屏幕上有编辑文本时,软键盘就会弹出,如果我想通过findViewById按下按钮,(假设这个特定按钮在软键盘后面)就会失败.它不是单击此按钮,而是单击软键盘中的某个按钮.因此,作为一种解决方法,我需要通过猴子跑步者按下键,以隐藏软键盘.

我的问题是如何确定从monkeyrunner运行时是否在屏幕上显示软键盘.

当我看着logcat时,我在看到软键盘时会看到以下内容

I/SurfaceFlinger( 2045): id=143(28) createSurf 0x4326743c (720x593),1 flag=0, InputMethod

并在删除软键盘时显示此信息

I/SurfaceFlinger( 2045): id=142 Removed InputMethod idx=4 MapSz=3
I/SurfaceFlinger( 2045): id=142 Removed InputMethod idx=-2 MapSz=3

如果有人可以提供如何从monkeyrunner脚本解析adb logcat输出的示例,如果找到任何合适的替代解决方案,我可以将其用作最后一个选项.

解决方法:

你在答案中提到的可能是AndroidViewClient的一个很好的补充,我会尽快加入.

无论如何,有一种方法可以获得相同的信息,但方式更复杂:

...
from com.dtmilano.android.viewclient import ViewClient

vc = ViewClient(*ViewClient.connectToDeviceOrExit())
view = vc.findViewByIdOrRaise('id/no_id/1')
view.getXY() # getXY() calls __dumpsWindowsInformation()
for w in view.windows:
    if view.windows[w].activity == 'InputMethod':
        print view.windows[w].visibility

11-FEB-15更新

最新的AndroidViewClient / culebra版本支持isKeyboardShown()方法.使用这样:

#! /usr/bin/env python
# -*- coding: utf-8 -*-
'''
Copyright (C) 2013-2014  Diego Torres Milano
Created on 2015-02-11 by Culebra v10.0.8
                      __    __    __    __
                     /  \  /  \  /  \  /  \ 
____________________/  __\/  __\/  __\/  __\_____________________________
___________________/  /__/  /__/  /__/  /________________________________
                   | / \   / \   / \   / \   \___
                   |/   \_/   \_/   \_/   \    o \ 
                                           \_____/--<
@author: Diego Torres Milano
@author: Jennifer E. Swofford (ascii art snake)
'''


import re
import sys
import os


try:
    sys.path.insert(0, os.path.join(os.environ['ANDROID_VIEW_CLIENT_HOME'], 'src'))
except:
    pass

from com.dtmilano.android.viewclient import ViewClient

TAG = 'CULEBRA'

_s = 5
_v = '--verbose' in sys.argv


kwargs1 = {'ignoreversioncheck': False, 'verbose': False, 'ignoresecuredevice': False}
device, serialno = ViewClient.connectToDeviceOrExit(**kwargs1)
print "Is keyboard shown:", device.isKeyboardShown()

标签:android,monkeyrunner,androidviewclient
来源: https://codeday.me/bug/20190725/1537086.html