openatx / uiautomator2

Android Uiautomator2 Python Wrapper
MIT License
6.48k stars 1.38k forks source link

Fastinput疑似空指针异常 #989

Closed qingqingcaoyuanlin closed 2 months ago

qingqingcaoyuanlin commented 4 months ago
codeskyblue commented 4 months ago

换3.1试试,输入法已完全重写

qingqingcaoyuanlin commented 4 months ago

已经切换了3.1.0版本,跑用例遇到个异常,adbutils版本是2.7.2,以下日志是pytest打印出来的: 2024-06-05 12:00:02 api.py:40 [WARNING]: broadcast ADB_KEYBOARD_CLEAR_TEXT failed: error:Attempt to read from field 'java.lang.CharSequence android.view.inputmethod.ExtractedText.text' on a null object reference, retrying in 1 seconds... 2024-06-05 12:00:03 api.py:40 [WARNING]: broadcast ADB_KEYBOARD_CLEAR_TEXT failed: error:Attempt to read from field 'java.lang.CharSequence android.view.inputmethod.ExtractedText.text' on a null object reference, retrying in 1.5 seconds...

qingqingcaoyuanlin commented 4 months ago

感觉好像是在空的输入框内调用了clear_text,下方是一些一些错误日志: [2024-06-05 11:52:13,435] [ WARNING] api.py:40 - broadcast ADB_KEYBOARD_CLEAR_TEXT failed: error:Attempt to read from field 'java.lang.CharSequence android.view.inputmethod.ExtractedText.text' on a null object reference, retrying in 1 seconds... [2024-06-05 11:52:14,511] [ WARNING] api.py:40 - broadcast ADB_KEYBOARD_CLEAR_TEXT failed: error:Attempt to read from field 'java.lang.CharSequence android.view.inputmethod.ExtractedText.text' on a null object reference, retrying in 1.5 seconds...

test_password.py:96 (Test_User_Psw.test_modify_password) self = <device.Device2 object at 0x000001A2C2FFA190>

def clear_text(self):
    """ clear text
    Raises:
        EnvironmentError
    """
    try:
        self.set_input_ime(True)
      self._must_broadcast('ADB_KEYBOARD_CLEAR_TEXT')

C:\Python39\lib\site-packages\uiautomator2_input.py:131:


C:\Python39\lib\site-packages\decorator.py:232: in fun return caller(func, *(extras + args), *kw) C:\Python39\lib\site-packages\retry\api.py:73: in retry_decorator return __retry_internal(partial(f, args, **kwargs), exceptions, tries, delay, max_delay, backoff, jitter, C:\Python39\lib\site-packages\retry\api.py:33: in __retry_internal return f()


self = <device.Device2 object at 0x000001A2C2FFA190> action = 'ADB_KEYBOARD_CLEAR_TEXT', extras = {}

@retry(AdbBroadcastError, tries=3, delay=1, jitter=0.5)
def _must_broadcast(self, action: str, extras: Dict[str, str] = {}):
    result = self._broadcast(action, extras)
    if result.code != BORADCAST_RESULT_OK:
      raise AdbBroadcastError(f"broadcast {action} failed: {result.data}")

E uiautomator2.exceptions.AdbBroadcastError: broadcast ADB_KEYBOARD_CLEAR_TEXT failed: error:Attempt to read from field 'java.lang.CharSequence android.view.inputmethod.ExtractedText.text' on a null object reference

C:\Python39\lib\site-packages\uiautomator2_input.py:72: AdbBroadcastError

codeskyblue commented 3 months ago

奥,懂了,密码区域好像是禁止获取文本的

codeskyblue commented 2 months ago

ref to project: https://github.com/openatx/android-uiautomator-server/