有人知道一个好的工具来爬取安卓应用程序的GUI吗?我发现了这个,但是不知道如何运行它...
有人知道一个好的工具来爬取安卓应用程序的GUI吗?我发现了这个,但是不知道如何运行它...
个人认为使用MonkeyRunner和AndroidViewClient制作一个简单的GUI爬虫不会太难。
另外,您可能需要了解uiautomator和UI测试
好是一个相对的术语。我没有使用过Robotium,但它在这些圈子里经常被提到。
编辑 - 根据评论请求添加示例。
使用MonkeyRunner和AndroidViewClient,您可以创建视图层次结构。 我认为AndroidViewClient有一个内置机制来完成这项工作,但我自己写了一个。 这段代码尝试生成类似于Linux树命令使用的布局。 space
和line
变量用于设置每行前面添加的“前缀”。 当然,这段代码使用深度优先递归遍历。
def printViewListDepth(view, depth=0):
space = '|' * int(not depth == 0)
space += (' ' * 2 * (depth-1)) + '|' * int(not depth-1 <= 0)
line = '_' * int(not depth == 0) * 2
text = view.getText()
text = text[:10] + int(len(text) > 10) * '...'
print " [*] %s%s%s %s %s" % (
space, line, view.getUniqueId(),
view.getClass().replace('android.widget.', ''), text)
for ch in view.children:
printViewListDepth(ch, depth+1)
您可以使用由AndroidViewClient返回的ViewClient
,如下所示调用printViewListDepth
:
printViewListDepth(viewClient.root)
someView.isClickable()
。如果它是可点击的,则可以在其上调用触摸事件,someView.touch()
。假设大多数按钮点击会打开不同的Activity,则您需要想出一种机制来回到原来的位置进行递归。device.press('KEYCODE_BACK', MonkeyDevice.DOWN_AND_UP)
。您可能需要处理应用程序特定的特殊情况,但这应该能让您有一个不错的开端。您可以查看Testdroid App Crawler。这是在Testdroid Cloud中作为项目类型提供的,您可以轻松地在15个免费设备上运行它。