我最近开始使用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框中。所截取的仿真程序和屏幕截图在文本字段中都没有显示任何文本。
我错过了一个步骤或只是做错了什么?
任何帮助都将非常感激!
我宁愿使用AndroidViewClient/cullebra来简化任务。基本上,您可以将设备与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可以是不同的
首先,我将不使用MonkeyRunner.sleep
命令,但我宁愿使用time
包和time.sleep
命令。只要导入包
import time
你应该可以走了。
此外,我建议您在device.touch
和device.type
之间等待一段时间。试试
device.touch(205,361, "DOWN_AND_UP")
time.sleep(1)
device.type("This is sample text")