6

我需要测试包含带有按钮的 WebView 的 android 应用程序。

Monkeyrunner 适用于除 WebView 之外的应用程序的所有部分。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延迟UP - 结果相同。来自 Python 或来自 Java 内部的 Monkeyrunner 也不起作用。像 ChimpChat 这样的 monkeyrunner 的口味和包装不起作用。

我认为它应该可以工作,因为有这么多的 web/HTML5 应用程序,而且所有这些应用程序都没有经过测试是不可能的。但它似乎相反。有关如何为 WebView 组件强制执行触摸事件的任何想法或建议?

4

3 回答 3

3

This was a bug which I had reported to Android team. Some people had confirmed it. However with time it was merged with another bug and later that another bug was closed as "works as designed". Fortunately after few next Android versions it started to work as it supposed to do.

于 2015-05-13T12:54:14.687 回答
0

我已经测试了您提供的示例代码,并且能够在 WebView 控件上执行触摸事件而没有任何问题。我能想到的几种方法可以使它对您有用:

  • 确保触摸在正确的位置,请注意触摸功能使用屏幕像素而不是倾斜,当您尝试在多个设备上进行测试时,这很可能会有所不同。您可以使用模拟器附带的“开发工具”应用程序中的“指针位置”来获取按钮的确切位置。
  • 您可以使用键盘事件而不是触摸事件来导航 UI。例如,您提供的示例应用程序可以这样完成:

    from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
    device = MonkeyRunner.waitForConnection(10)
    device.press('KEYCODE_DPAD_DOWN')
    device.press('KEYCODE_DPAD_CENTER')
    

    并且会产生想要的效果

于 2013-02-17T06:30:52.873 回答
0

这不是答案,但我认为它可能会有所帮助。

Square 发布了一个名为“Spoon”的新仪器测试框架。它允许您做任何您想做的事情,并且在我运行的几个测试中运行良好。我还没有尝试过 webviews,但我认为它也应该涵盖这些。它是由 Jake Wharton(ActionBarSherlock 背后的人)创建的。如果您想尝试一下,请点击以下链接:

http://square.github.com/spoon/

于 2013-02-18T07:46:44.393 回答