安卓:Python:AndroidViewClient 新手问题

0 投票
1 回答
744 浏览
提问于 2025-04-17 17:08

这是我当前项目的联盟界面:

ActAlliances

这是使用 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()

点击后会弹出添加联盟的对话框:

Add Alliance Dialog

这是弹出对话框的视图信息:

    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

撰写回答