AndroidViewClient中viewclient遍历方法的使用方法
How to use viewclient traverse method in AndroidViewClient
我有以下代码来遍历 AndroidViewClient 中的 ListView 以构建帐户列表。它工作正常,但这是一个好方法,因为我找不到更合适的方法将变量 list_accounts 传递给函数 findAccount(),因为它会引发参数错误,因此我必须在全局范围内使用它。有没有办法将参数传递给 vc.traverse() 的转换方法?
def findAccount(view):
if view.getClass() == 'android.widget.TextView':
text = view.getText()
if re.match(re.compile('.*@yahoo.com'), text):
list_accounts.append(text)
list_accounts = []
listview_id = vc.findViewByIdOrRaise('id/no_id/11')
vc.traverse(root=listview_id, transform=findAccount)
for item in list_accounts:
print "account:", item
你可以做到
def findAccount(la, view):
if view.getClass() == 'android.widget.TextView':
text = view.getText()
if re.match(re.compile('.*@yahoo.com'), text):
la.append(text)
list_accounts = []
listview_id = vc.findViewByIdOrRaise('android:id/list')
vc.traverse(root=listview_id, transform=lambda v: findAccount(list_accounts, v))
for item in list_accounts:
print "account:", item
但我不确定这是否比您的版本更清晰易读。
不过,你可以做到
for tv in vc.findViewsWithAttribute('class', 'android.widget.TextView', root=listview_id):
text = tv.getText()
if re.match(re.compile('.*@yahoo.com'), text):
list_accounts.append(text)
我想这会提高可读性。
我有以下代码来遍历 AndroidViewClient 中的 ListView 以构建帐户列表。它工作正常,但这是一个好方法,因为我找不到更合适的方法将变量 list_accounts 传递给函数 findAccount(),因为它会引发参数错误,因此我必须在全局范围内使用它。有没有办法将参数传递给 vc.traverse() 的转换方法?
def findAccount(view):
if view.getClass() == 'android.widget.TextView':
text = view.getText()
if re.match(re.compile('.*@yahoo.com'), text):
list_accounts.append(text)
list_accounts = []
listview_id = vc.findViewByIdOrRaise('id/no_id/11')
vc.traverse(root=listview_id, transform=findAccount)
for item in list_accounts:
print "account:", item
你可以做到
def findAccount(la, view):
if view.getClass() == 'android.widget.TextView':
text = view.getText()
if re.match(re.compile('.*@yahoo.com'), text):
la.append(text)
list_accounts = []
listview_id = vc.findViewByIdOrRaise('android:id/list')
vc.traverse(root=listview_id, transform=lambda v: findAccount(list_accounts, v))
for item in list_accounts:
print "account:", item
但我不确定这是否比您的版本更清晰易读。
不过,你可以做到
for tv in vc.findViewsWithAttribute('class', 'android.widget.TextView', root=listview_id):
text = tv.getText()
if re.match(re.compile('.*@yahoo.com'), text):
list_accounts.append(text)
我想这会提高可读性。