Android MonkeyRunner无法输入文字

时间:2014-03-14 16:31:18

标签: android testing android-ui android-testing monkeyrunner

我最近开始使用MonkeyRunner来测试我的Android应用程序的UI(我也使用Espresso,但想要使用MonkeyRunner)。我遇到的问题是我无法使用自动化脚本在EditText字段中输入文本。

该脚本完美地浏览了我的应用程序,但它似乎并未实际输入MonkeyRunner.type()命令的任何文本。

请在下面找到我的脚本。

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
from com.android.monkeyrunner.easy import EasyMonkeyDevice, By
import commands
import sys
import os

# starting the application and test
print "Starting the monkeyrunner script"

# connection to the current device, and return a MonkeyDevice object
device = MonkeyRunner.waitForConnection()
easy_device = EasyMonkeyDevice(device)

apk_path = device.shell('pm path com.mysample
if apk_path.startswith('package:'):
    print "application installed."
else:
    print "not installed, install APK"
    device.installPackage('/MySample/MySample.apk')')

package ="com.mysample"
activity = ".SampleActivity"

print "Package: " + package + "Activity: " + activity

print "starting application...."
device.startActivity(component=package + '/' + activity)
print "...component started"

device.touch(205,361, "DOWN_AND_UP")
device.type("This is sample text")
MonkeyRunner.sleep(1)

result = device.takeSnapshot()

result.writeToFile("images/testimage.png",'png')

从上面的脚本中可以看到,文本This is sample text应该放在EditText框中。所使用的模拟器和屏幕截图都不会在文本字段中显示任何文本。

我错过了一步还是做错了什么?

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

我宁愿使用AndroidViewClient/culebra来简化任务。 基本上,您可以将设备与adb连接,然后运行

culebra -VC -d on -t on -o myscript.py

该脚本获取对所有可见视图的引用。编辑脚本并在末尾添加

no_id10.type('This is sample text')
no_id10.writeImageToFile('/tmp/image.png')

无需担心查看坐标,无需触摸和键入,无需添加睡眠等。

注意:这是以no_id10为例,EditText的ID可能不同

答案 1 :(得分:0)

首先,我使用MonkeyRunner.sleep命令,但我宁愿使用time包和time.sleep命令。只需导入包

import time

你应该好好去。

此外,我建议您在device.touchdevice.type之间等待一段时间。试试

device.touch(205,361, "DOWN_AND_UP")
time.sleep(1)
device.type("This is sample text")