如何使用uiautomator填充表单中的所有字段

时间:2015-11-24 19:46:43

标签: python android-uiautomator

目前,我尝试使用Python + uiautomator来填充表单中的所有字段

我的代码:

d = UIDevice(adb.deviceList[0].device)

last_item_exists = d(text='Memo').exists

while not last_item_exists:
    print "Searching for fields on screen"
    fields = d(className = 'android.widget.EditText', focusable = True)
    for field in fields:
        if not (field.text == '0' or field.text == '50'): #Skip fields with 0 or 50
            print "Writing on the field"
            field.click()
            d.press(0x0000001d, 0x00001000)
            d.press('del')
            field.set_text('50')
        else:
            print "Skipping field"
    print "Searching for Memo field"
    last_item_exists = d(text='Memo').exists
    print "Scrolling down"
    d(scrollable=True).fling()

d(text='Confirm').click()

问题:

根据设备分辨率,可能会出现此错误:

uiautomator.JsonRPCError: JsonRPC Error code: -32002, Message: com.android.uiautomator.core.UiObjectNotFoundException: UiSelector[CLASS=android.widget.EditText, INSTANCE=9, FOCUSABLE=true, RESOURCE_ID=com.salab.ABRT:id/task_info_item_count]

这种情况正在发生,因为当我点击最后一个可见字段时,屏幕有时会向下滚动一点,顶部字段不再可见。

是否有针对此类问题的解决方法,或者我必须改变我的逻辑(现在不能考虑任何事情......)?

1 个答案:

答案 0 :(得分:1)

UiAutomator每次只能看到屏幕上可见的内容。因此,如果您向下滚动(或应用程序确实),那么它就无法与之交互。

您可以更改逻辑,也可以上下滑动屏幕,验证是否所有内容都已填满,如果没有,请填写。