我需要测试安卓应用程序,其中包括带有按钮的WebView。
Monkeyrunner在应用程序的所有部分都运行得很好,除了WebView。按钮只是忽略来自Monkeyrunner的触摸。我看到那个按钮被点击了,因为它变成了灰色,但是按钮什么也不做。如果我在模拟器上使用鼠标,或者在真实设备上使用手指,那么按钮工作得很好。
我从logcat中看到,触摸事件被发送到应用程序,但应用程序没有任何操作。
下面是一些代码:
final WebView w = (WebView) findViewById(R.id.webView1);
String summary = "<html><body><b>Google</b><form action=http://google.com><input type=submit><input type=text></form></body></html>";
w.loadData(summary, "text/html", null);布局:
<Button android:id="@+id/button1" android:text="Click me!" />
<WebView android:id="@+id/webView1" />Monkeyrunner py:
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
device = MonkeyRunner.waitForConnection(10)
# android.widget.Button COORDINATES - THIS WORKS FINE
device.touch(10,100, 'DOWN_AND_UP')
# WEBVIEW BUTTON COORDINATES - BUTTON DOESN'T WORK
device.touch(200,200, 'DOWN_AND_UP')我已经分别尝试了DOWN delay UP -同样的结果。来自Python或Java内部的Monkeyrunner也不能工作。像ChimpChat这样的monkeyrunner的风格和包装器不起作用。
我认为它应该可以工作,因为有太多的web/HTML5应用程序,不可能所有的应用程序都没有经过测试。但它似乎是相反的。有什么想法或建议如何为WebView组件执行触摸事件吗?
发布于 2015-05-13 20:54:15
这是我向Android团队报告的一个bug。有些人已经证实了这一点。然而,随着时间的推移,它与另一个bug合并,后来另一个bug被关闭,因为“按设计工作”。幸运的是,在几个下一个Android版本之后,它开始像它应该做的那样工作。
发布于 2013-02-17 14:30:53
我已经测试了您提供的示例代码,并且能够在WebView控件上执行触摸事件,没有任何问题。我有几种方法可以让它为你工作:
从com.android.monkeyrunner导入MonkeyRunner,MonkeyDevice device = MonkeyRunner.waitForConnection(10) device.press('KEYCODE_DPAD_DOWN') device.press('KEYCODE_DPAD_CENTER')
并将产生所需的效果
发布于 2013-02-18 15:46:44
这不是一个答案,但我认为它可能会有所帮助。
Square发布了一个新的仪器测试框架,名为"Spoon“。它允许你做任何你想做的事情,并且在我运行的几个测试中运行得很好。我还没有尝试过webviews,但我认为它也应该涵盖这些内容。它是由杰克·沃顿(ActionBarSherlock背后的人)创建的。如果你想尝试一下,这里有一个链接:
http://square.github.com/spoon/
https://stackoverflow.com/questions/14784320
复制相似问题