0

尝试使用 MonkeyRunner 执行一些测试并希望使用 AndroidViewClient 来处理 EditText 小部件。

我相信我正确使用了 AndroidViewClient (下面的相关内容),findViewByIdOrRaise()总是抛出错误。我已经尝试了所有想到的指定 ID 的变体。

这是我活动的 XML 中的一个片段:

<EditText
    android:id="@+id/someText"
    ... >
    <requestFocus />
</EditText>
<!-- Yes, that is the actual id of my EditText -->

在我的 MonkeyRunner 脚本中,我有以下内容:

device, serialno = ViewClient.connectToDeviceOrExity(serialNo=myDeviceId)
vc = ViewClient(device=device, serialno=serialno)
device.installPackage(apkPath)
device.startActivity(component='com.app.name/com.app.name.ActivityName')
editTextId = 'id/someText'
try:
    someText = vc.findViewByIdOrRaise(editTextId)
    someText.touch()
    someText.type('Derp derp derp')
except ViewNotFoundException, e:
    # The comma above is because Jython 2.5.3 does not support the AS keyword
    print ' [*] %s' % (e)

当然,我的代码比显示的要多一点(但不多)。我去掉了所有看起来不相关的东西。我很乐意把它全部放在那里,但不想一开始就在这里吐出所有代码。

我已经查看了有关该主题的所有内容:

关于我做错了什么的任何想法?

4

1 回答 1

2

最新版本的 ViewClient 为应用程序中的每个视图提供了唯一的 ID。id 格式为 i/no_id/number。您可以使用名为 dump.py 的脚本来查看当前视图。它位于 ViewClient 的示例文件夹中。

于 2013-03-07T07:45:25.557 回答