【问题标题】:Is there an ADB Shell command that tells me the contents of a TextView?是否有一个 ADB Shell 命令可以告诉我 TextView 的内容?
【发布时间】:2022-01-13 16:01:36
【问题描述】:

我一直在 Linux 上编写此脚本,以便自动化我正在开发的应用程序的某些部分。我的下一个目标是让应用程序的登录过程自动化,这相当于单击几个按钮并将 6 位代码输入网站上的单独登录页面。我们将 ADB shell 脚本和运行 Selenium webdriver 的 Python 脚本结合使用,用于需要登录的网页等。

这让我留在了现在的位置;我找到了如何使用 ADB shell 命令在特定坐标处输入按钮按下(或者更确切地说是“点击”本身),所以这是问题的一半......但是,我无法找到专门获取 TextView 内容所需的命令用于我的脚本;它用于登录流程,所以我需要将它分配给脚本中的一个变量,如果可能的话,就像一个目录一样......

(即 $TEXTCONTENT=****** 其中 *s 是 6 位代码)

... 以便以后在 Selenium webdriver 需要登录并输入 6 位代码时使用它。我正在寻找一个特定的命令来获取它吗?

【问题讨论】:

    标签: android automation scripting adb


    【解决方案1】:

    您可以在此处使用 uiautomator。有一个 Python 包uiautomator 可以提供帮助:

    from uiautomator import device as d
    
    d(resourceId="id/mytextfield").text
    

    或者,如果您想以更手动的方式进行操作,可以使用adb shell uiautomator dump 将屏幕内容转储到 XML 文件中。然后你可以在本地 adb pull 它,然后你的脚本可以解析 XML 的文本。

    【讨论】:

      【解决方案2】:

      您可以使用AndroidViewClient 来查找视图并与之交互。

      我不知道您正在使用的应用程序,所以我的示例基于计算器。

      如果您在计算器上输入任何数字并运行此脚本

      #! /usr/bin/env python3
      # -*- coding: utf-8 -*-
      
      from com.dtmilano.android.viewclient import ViewClient
      
      vc = ViewClient(*ViewClient.connectToDeviceOrExit())
      vc.dump()
      
      formula = vc.findViewByIdOrRaise("com.google.android.calculator:id/formula")
      print(formula.getText())
      

      它会打印那个数字。

      【讨论】:

        猜你喜欢
        • 2015-05-13
        • 2015-05-01
        • 2014-11-13
        • 2012-07-11
        • 1970-01-01
        • 1970-01-01
        • 2021-03-28
        • 2015-07-30
        相关资源
        最近更新 更多