在Androidviewclient中实现无限滚动

时间:2015-01-21 01:37:12

标签: android python androidviewclient

我正在尝试为app实现Androidviewclient 5.1.1,它实现了listitems的滚动。我想向上滚动到列表的所有条目都已完成。 可滚动变为FALSE。

我该如何处理?
我应该检查哪个属性或ANDROIDVIEWCLIENT?

1 个答案:

答案 0 :(得分:1)

我在设备上运行通讯录应用时,使用culebra GUI(来自AndroidViewClient 9.2.1)生成此脚本scrollable.py

culebra -pVCLGo scrollable.py

要滚动列表,我使用了culebra: the magical drag中描述的拖动对话框。

退出GUI并生成脚本后,我删除了除ListView之外的所有其他视图并添加了while循环。所以除了while循环之外,几乎所有内容都是自动生成的。

最后的脚本现在是:

#! /usr/bin/env python
# -*- coding: utf-8 -*-
'''
Copyright (C) 2013-2014  Diego Torres Milano
Created on 2015-01-21 by Culebra v9.2.1
                      __    __    __    __
                     /  \  /  \  /  \  /  \ 
____________________/  __\/  __\/  __\/  __\_____________________________
___________________/  /__/  /__/  /__/  /________________________________
                   | / \   / \   / \   / \   \___
                   |/   \_/   \_/   \_/   \    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': True, 'ignoresecuredevice': False}
device, serialno = ViewClient.connectToDeviceOrExit(**kwargs1)
kwargs2 = {'startviewserver': True, 'forceviewserveruse': False, 'autodump': False, 'ignoreuiautomatorkilled': True}
vc = ViewClient(device, serialno, **kwargs2)

device.Log.d(TAG, "dumping content of window=-1",  _v)
vc.dump(window=-1)

def doSomething(view):
    if view.getClass() == 'android.widget.TextView':
        print view.getText()

while True:
    device.Log.d(TAG, "finding view with id=android:id/list",  _v)
    android___id_list = vc.findViewByIdOrRaise("android:id/list")
    # check if scrollable
    if not android___id_list.isScrollable():
        break
    vc.traverse(root=android___id_list, transform=doSomething)
    device.Log.d(TAG, "Scrolling",  _v)
    device.dragDip((185.0, 499.0), (191.0, 175.5), 200, 20, 0)
    vc.sleep(1)
    device.Log.d(TAG, "dumping content of window=-1",  _v)
    vc.dump(window=-1)
  

注意:在这种情况下,脚本永远不会退出,因为Contacts中的ListView永远不会更改其可滚动属性,我希望您的应用   就像你在问题中提到的那样。

编辑1

根据其中一条评论

中的请求为ListView子项添加了树遍历

编辑2

添加了doSomething()转换方法

编辑3

现在检查班级