安卓:Python:AndroidViewClient 新手问题
这是我当前项目的联盟界面:
这是使用 monkeyrunner dump.py 读取的视图信息:
android.widget.FrameLayout id/no_id/1
android.widget.LinearLayout id/no_id/2
android.widget.FrameLayout id/no_id/3
android.view.View id/no_id/4
android.widget.FrameLayout id/no_id/5
android.widget.ImageView id/no_id/6
android.widget.ImageView id/no_id/7
android.widget.LinearLayout id/no_id/8
android.widget.LinearLayout id/no_id/9
android.widget.TextView id/no_id/10 Alliances
android.widget.LinearLayout id/no_id/11
android.widget.TextView id/no_id/12
android.widget.TextView id/no_id/13
android.widget.FrameLayout id/no_id/14
android.widget.TableLayout id/no_id/15
android.widget.TableRow id/no_id/16
android.widget.TextView id/no_id/17 Sector: NULL SECTOR
android.widget.TableRow id/no_id/18
android.widget.TextView id/no_id/19 Number of Alliances:
android.widget.TextView id/no_id/20 1
android.widget.TableRow id/no_id/21
android.widget.TextView id/no_id/22 Row Name Power
android.widget.TableRow id/no_id/23
android.widget.ListView id/no_id/24
android.widget.RelativeLayout id/no_id/25
android.widget.TextView id/no_id/26 1
android.widget.TextView id/no_id/27 NULL ALLIANCE
android.widget.TextView id/no_id/28 Neutral
android.widget.TextView id/no_id/29 10000
在我的 avc_addallc.py 文件中,下面这一行代码是用来点击操作栏中的新建(‘+’)按钮:
add = vc.findViewById('id/no_id/12').touch()
点击后会弹出添加联盟的对话框:
这是弹出对话框的视图信息:
android.widget.FrameLayout id/no_id/1
android.widget.FrameLayout id/no_id/2
android.widget.FrameLayout id/no_id/3
android.widget.LinearLayout id/no_id/4
android.widget.LinearLayout id/no_id/5
android.widget.LinearLayout id/no_id/6
android.widget.TextView id/no_id/7 New Alliance
android.view.View id/no_id/8
android.widget.FrameLayout id/no_id/9
android.widget.FrameLayout id/no_id/10
android.widget.ScrollView id/no_id/11
android.widget.RelativeLayout id/no_id/12
android.widget.TextView id/no_id/13 Sector: Helix
android.widget.TextView id/no_id/14 Alliance:
android.widget.EditText id/no_id/15 Alliance_Name
android.widget.TextView id/no_id/16 Leader:
android.widget.EditText id/no_id/17 Leader
android.widget.TextView id/no_id/18 Political Relation:
android.widget.Spinner id/no_id/19
android.widget.TextView id/no_id/20 Ally
android.widget.TextView id/no_id/21 Rank: Power:
android.widget.EditText id/no_id/22 2500
android.widget.EditText id/no_id/23 1234567
android.widget.TextView id/no_id/24 No. Players: Map Score:
android.widget.EditText id/no_id/25 100
android.widget.EditText id/no_id/26 123456789
android.widget.TextView id/no_id/27 No. Bases
android.widget.EditText id/no_id/28 8000
android.widget.LinearLayout id/no_id/29
android.widget.LinearLayout id/no_id/30
android.widget.Button id/no_id/31 Cancel
android.widget.Button id/no_id/32 Save
接下来在我的 avc_addallc.py 文件中,应该有一行代码是用来在第一个输入框(联盟名称)中填入文本的:
etAllc = vc.findViewById('id/no_id/15').type('Legion of Anarchy')
但是这行代码没有任何效果,反而返回了这个错误:
130225 21:31:13.023:I [MainThread] [com.android.chimpchat.ChimpManager] Monkey Command: touch down 354 74.
130225 21:31:13.107:I [MainThread] [com.android.chimpchat.ChimpManager] Monkey Command: touch up 364 84.
130225 21:31:16.223:S [MainThread] [com.android.monkeyrunner.MonkeyRunnerOptions] Script terminated due to an exception
130225 21:31:16.223:S [MainThread] [com.android.monkeyrunner.MonkeyRunnerOptions]Traceback (most recent call last):
File "c:\code\avc_addallc.py", line 44, in <module>
etAllc = vc.findViewById('id/no_id/15').type('Legion of Anarchy')
File "C:\adt-bundle-windows-x86\AndroidViewClient\src\com\dtmilano\android\viewclient.py", line 275, in __getattr__
raise AttributeError, name
AttributeError: type
我哪里出错了?谢谢!
1 个回答
0
首先,确认你使用的是 AndroidViewClient 版本 >= 2.3.8。在之前的版本中,处理带空格的字符串的方法是不同的。
接着,把这一行
etAllc = vc.findViewById('id/no_id/15').type('Legion of Anarchy')
拆分成
etAllc = vc.findViewByIdOrRaise('id/no_id/15')
etAllc.type('Legion of Anarchy')
我想这就是你想要的结果。否则,etAllc
将始终是 None
。