gpt4 book ai didi

安卓图形界面爬虫

转载 作者:搜寻专家 更新时间:2023-11-01 08:58:09 26 4
gpt4 key购买 nike

有谁知道抓取 Android 应用程序 GUI 的好工具吗?我找到了 this但不知道如何运行它...

最佳答案

就我个人而言,我认为使用 MonkeyRunner 制作一个简单的 GUI 爬虫并不难。和 AndroidViewClient .

此外,您可能需要查看 uiautomatorUI Testing

好是一个相对的词。 Robotium我没用过,但是圈子里很多人提到它。

编辑 - 添加了基于评论请求的示例。

使用 MonkeyRunner 和 AndroidViewClient,您可以创建 View 的层次结构。我认为 AndroidViewClient 有一个内置的机制来做到这一点,但我自己写了一个。此代码尝试生成类似于 Linux tree 命令所使用的布局。 spaceline 变量用于设置每行前面的“前缀”。当然,这段代码使用了深度优先、递归遍历。

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)

您调用 printViewListDepth 如下,使用 AndroidViewClient 返回的 ViewClient:

printViewListDepth(viewClient.root)

请注意,在上面的实现中,View 类被删除了“android.widget”。 View 的文本被截断为 10 个字符。您可以更改这些以满足您的需要。

编辑抓取 GUI

使用 AndroidViewClient 可以查询一个 View 是否可点击,someView.isClickable()。如果它是可点击的,您可以在其上调用触摸事件,someView.touch()。假设大多数按钮点击打开不同的 Activity,您将需要想出一种机制来返回您来自的地方以进行递归。

我想这可以通过一些努力来完成,但您可能希望从调用 BACK 按钮按下这样简单的事情开始,device.press('KEYCODE_BACK', MonkeyDevice.DOWN_AND_UP) .您可能需要处理出现的特定于应用程序的特殊情况,但这应该能让您有个好的开始。

关于安卓图形界面爬虫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17348376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com