首页 > 解决方案 > Android 本机应用程序 - 如何获取类 android.view.view 中的文本

问题描述

我是新手,正在尝试自动化应用程序。我正在打开一个加载动态文本的页面(例如:一本书),它具有以下 XML 源,

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<hierarchy index="0" class="hierarchy" rotation="0" width="1080" height="1794">  
  <android.widget.FrameLayout index="0" package="name" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1080,1794]" displayed="true">
    <android.view.ViewGroup index="0" package="name" class="android.view.ViewGroup" text="" resource-id="android:id/decor_content_parent" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1080,1794]" displayed="true">
      <android.widget.FrameLayout index="0" package="name" class="android.widget.FrameLayout" text="" resource-id="android:id/content" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1080,1794]" displayed="true">
        <android.widget.RelativeLayout index="0" package="name" class="android.widget.RelativeLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1080,1794]" displayed="true">
          <android.widget.RelativeLayout index="0" package="name" class="android.widget.RelativeLayout" text="" resource-id="name:id/main_reader_layout" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1080,1794]" displayed="true">
            <android.widget.FrameLayout index="0" package="name" class="android.widget.FrameLayout" text="" resource-id="name:id/animation_body" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1080,1794]" displayed="true">
              <android.widget.FrameLayout index="0" package="name" class="android.widget.FrameLayout" text="" resource-id="name:id/video_view_container" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1080,1794]" displayed="true" />
              <android.view.View index="1" package="name" class="android.view.View" text="" resource-id="name:id/highlight_link_view" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1080,1794]" displayed="true" />
              ***<android.view.View index="2" package="name" class="android.view.View" text="" resource-id="name:id/curl_ogl_view" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1080,1794]" displayed="true" />***
            </android.widget.FrameLayout>
            <android.widget.FrameLayout index="1" package="name" class="android.widget.FrameLayout" text="" resource-id="name:id/bookmark_region" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[972,0][1080,289]" displayed="true" />
            <android.widget.TextView index="2" package="name" class="android.widget.TextView" text="138 of 218" resource-id="name:id/reader_page_info" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,1798][1080,1920]" displayed="true" />
          </android.widget.RelativeLayout>
        </android.widget.RelativeLayout>
      </android.widget.FrameLayout>
    </android.view.ViewGroup>
  </android.widget.FrameLayout>
</hierarchy>

在哪里

class="android.view.View" text="" resource-id="name:id/curl_ogl_view"

包含文本。

我正在尝试获取文本,然后将其传递给数组或字符串。请让我知道我是否可以获取页面中的文字。

请找到示例代码,

WebElement viewContainer = (WebElement) driver.findElement(By.id("name:id/curl_ogl_view"));
String getTextfromView = ((WebElement)viewContainer).getText().toString();
System.out.println("length::::"+getTextfromView.length());
System.out.println("length::::"+getTextfromView);

当我运行上面的代码时,请找到输出,

[RemoteTestNG] 检测到 TestNG 版本 7.0.0 2020 年 2 月 27 日 1:18:10 PM io.appium.java_client.remote.AppiumCommandExecutor$1 lambda$0 信息:检测到的方言:W3C Pass length::::0 length:::: PASSED : 文本测试

================================================= 默认测试

测试运行:1,失败:0,跳过:0

如果需要任何其他信息,请告诉我。

标签: javaandroidseleniumselenium-webdriverappium-android

解决方案


class="android.view.View" text="" resource-id="name:id/curl_ogl_view"

根据您的 xml dom,您在上一行中提到的类似乎不包含任何文本。尝试找到包含文本的正确元素。也许您可以分享完整 dom 的链接或其他内容,它会更有帮助。


推荐阅读