目前,我尝试使用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]
这种情况正在发生,因为当我点击最后一个可见字段时,屏幕有时会向下滚动一点,顶部字段不再可见。
是否有针对此类问题的解决方法,或者我必须改变我的逻辑(现在不能考虑任何事情......)?
答案 0 :(得分:1)
UiAutomator每次只能看到屏幕上可见的内容。因此,如果您向下滚动(或应用程序确实),那么它就无法与之交互。
您可以更改逻辑,也可以上下滑动屏幕,验证是否所有内容都已填满,如果没有,请填写。