• 【Android自动化】在使用uiautomator框架自动化时,往往有时再运行脚本时发现xxx实例属性不被允许


    例如:

     1 # -*- coding:utf-8 -*-
     2 from uiautomator import device as d
     3 
     4 d(classname="android.widget.ListView", resourceId="android:id/list").click()
     5 
     6 输出:
     7 Traceback (most recent call last):
     8 File "E:/Project/qqqq/13.py", line 4, in <module>
     9 d(classname="android.widget.ListView", resourceId="android:id/list").click()
    10 File "C:Python27libsite-packagesuiautomator-0.1.32-py2.7.egguiautomator\__init__.py", line 665, in __call__
    11 
    12 File "C:Python27libsite-packagesuiautomator-0.1.32-py2.7.egguiautomator\__init__.py", line 257, in __init__
    13 
    14 File "C:Python27libsite-packagesuiautomator-0.1.32-py2.7.egguiautomator\__init__.py", line 264, in __setitem__
    15 
    16 ReferenceError: classname is not allowed.

    分析:

    出现这种错误时一般都是实例的属性编写错误导致的,正确的应该是:className     实例属性的名字命名遵循规则为(如果只是一个单词,那首字母小写,如果是多个单词拼接,那从第二个单词开始的首字母大写如(aaBbCc),下面把uiautomator中所有实例属性key全部列出如下,不要再出错啦

     1 class Selector(dict):
     2 
     3 """The class is to build parameters for UiSelector passed to Android device.
     4 """
     5 __fields = {
     6 "text": (0x01, None), # MASK_TEXT,
     7 "textContains": (0x02, None), # MASK_TEXTCONTAINS,
     8 "textMatches": (0x04, None), # MASK_TEXTMATCHES,
     9 "textStartsWith": (0x08, None), # MASK_TEXTSTARTSWITH,
    10 "className": (0x10, None), # MASK_CLASSNAME
    11 "classNameMatches": (0x20, None), # MASK_CLASSNAMEMATCHES
    12 "description": (0x40, None), # MASK_DESCRIPTION
    13 "descriptionContains": (0x80, None), # MASK_DESCRIPTIONCONTAINS
    14 "descriptionMatches": (0x0100, None), # MASK_DESCRIPTIONMATCHES
    15 "descriptionStartsWith": (0x0200, None), # MASK_DESCRIPTIONSTARTSWITH
    16 "checkable": (0x0400, False), # MASK_CHECKABLE
    17 "checked": (0x0800, False), # MASK_CHECKED
    18 "clickable": (0x1000, False), # MASK_CLICKABLE
    19 "longClickable": (0x2000, False), # MASK_LONGCLICKABLE,
    20 "scrollable": (0x4000, False), # MASK_SCROLLABLE,
    21 "enabled": (0x8000, False), # MASK_ENABLED,
    22 "focusable": (0x010000, False), # MASK_FOCUSABLE,
    23 "focused": (0x020000, False), # MASK_FOCUSED,
    24 "selected": (0x040000, False), # MASK_SELECTED,
    25 "packageName": (0x080000, None), # MASK_PACKAGENAME,
    26 "packageNameMatches": (0x100000, None), # MASK_PACKAGENAMEMATCHES,
    27 "resourceId": (0x200000, None), # MASK_RESOURCEID,
    28 "resourceIdMatches": (0x400000, None), # MASK_RESOURCEIDMATCHES,
    29 "index": (0x800000, 0), # MASK_INDEX,
    30 "instance": (0x01000000, 0) # MASK_INSTANCE,
    31 }
  • 相关阅读:
    Createjs学习心得之使用EaselJs实现拖拽效果
    学习笔记——复杂的窗口分帧
    cordova 插件开发
    wcf rest 服务用于安卓和ISO调用5-------验证
    wcf rest 服务用于安卓和ISO调用4-------多文件上传
    wcf rest 服务用于安卓和ISO调用3-------soap与rest共用
    wcf rest 服务用于安卓和ISO调用2-------文件上传
    wcf rest 服务用于安卓和ISO调用1
    RecycleView 瀑布流滑动移位
    RecycleView 滑动到底部,加载更多
  • 原文地址:https://www.cnblogs.com/aziji/p/9273776.html
Copyright © 2020-2023  润新知