如果有多个具有相同类名且没有资源 ID 的元素,如何检查元素 [英] How to inspect element if there are multiple elements with same class name and doesn't have resource-id

查看:36
本文介绍了如果有多个具有相同类名且没有资源 ID 的元素,如何检查元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

<?xml version="1.0" encoding="UTF-8" standalone="true"?>

-<hierarchy rotation="0">


-<node bounds="[0,0][720,1280]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.widget.FrameLayout" resource-id="" text="" index="0">


-<node bounds="[0,0][720,1280]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.widget.LinearLayout" resource-id="" text="" index="0">


-<node bounds="[0,42][720,1280]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.widget.FrameLayout" resource-id="android:id/content" text="" index="0">


-<node bounds="[0,42][720,1280]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.webkit.WebView" resource-id="" text="" index="0">


-<node bounds="[0,42][720,1280]" selected="false" password="false" long-clickable="false" scrollable="true" focused="true" focusable="true" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.webkit.WebView" resource-id="" text="Ionic App" index="0">


-<node bounds="[0,42][720,1280]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="0">


-<node bounds="[0,42][720,1280]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="0">


-<node bounds="[0,42][720,1280]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="0">


-<node bounds="[0,42][720,1280]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="0">


-<node bounds="[0,42][720,1280]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="0">


-<node bounds="[0,42][720,1280]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="0">

<node bounds="[0,42][720,1280]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="0"/>


-<node bounds="[0,42][720,1280]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="1">


-<node bounds="[0,42][720,1280]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="0">


-<node bounds="[0,42][720,80]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="0">

<node bounds="[631,42][720,80]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="true" enabled="true" clickable="true" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.widget.Button" resource-id="" text="V 3.5" index="0"/>

</node>

<node bounds="[190,105][530,229]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.widget.Image" resource-id="" text="Himalaya Image" index="1"/>

<node bounds="[288,262][432,369]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.widget.Image" resource-id="" text="Leap Image" index="2"/>


-<node bounds="[35,483][687,628]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="3">


-<node bounds="[131,483][589,565]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="0">


-<node bounds="[131,483][589,565]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="0">


-<node bounds="[131,483][589,563]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="0">


-<node bounds="[131,483][589,563]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="0">

<node bounds="[145,504][575,539]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="true" enabled="true" clickable="true" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.widget.EditText" resource-id="" text="" index="0" NAF="true"/>

<node bounds="[131,483][589,565]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="true" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="1" NAF="true"/>

</node>

</node>

</node>

</node>


-<node bounds="[35,596][687,628]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="1">

<node bounds="[224,602][390,628]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="true" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="Register" index="0"/>

<node bounds="[388,596][397,628]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text=" " index="1"/>

<node bounds="[393,602][497,628]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="true" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="Forgot PIN" index="2"/>

</node>

</node>

<node bounds="[101,745][619,1106]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.widget.Image" resource-id="" text="Lead 2020" index="4"/>

</node>

</node>

</node>

</node>

</node>

</node>

<node bounds="[0,42][720,45]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="" text="" index="1"/>

</node>

</node>

</node>

</node>

</node>

</node>

<node bounds="[0,0][720,42]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.talentpace.substk" class="android.view.View" resource-id="android:id/statusBarBackground" text="" index="1"/>

</node>

</hierarchy>

被检查的元素.尝试通过各种方式在代码中查找元素.但没有任何效果.请建议在应用程序中编辑PIN码的xpath应该是什么

Inspected Element. Tried finding element in code by various ways. But nothing is working. Please suggest what should be the xpath for editing the PIN number in app

  1. android.view.view 类有多个元素,资源 id 和 text 为空.
  2. 只有 1 个具有 android.widget.editText 类的元素.但这也行不通.

附上我试图为其编写代码的树

Attached the tree which i am trying to write the code for

UIAutomatorTree

下面是我试过的xpath

Below is the xpath which i tried

driver.findElementByXPath("//android.widget.FrameLayout//android.view.View[@index='3']//android.widget.EditText")

driver.findElementByXPath("//android.widget.FrameLayout//android.view.View[@index='3']//android.widget.EditText")

推荐答案

这不是在回答问题,但如果您可以访问源代码,可能会有所帮助.setContentDescription 方法有助于处理对于此类问题,它必须在 XML 中定义,这不仅有助于可访问性,而且有助于任何 UI 测试.即使您有 ID/文本,也可能出现多个视图具有相似文本和/或 ID 的情况

That's not answering the question but may help if you have access to the source code. setContentDescription method helps to deal with such problems, it has to be defined in XML which helps not only with accessibility but also during any UI testing. Even when you have an ID/text it may be a situation when multiple views have similar text and/or ids

在你的情况下 - 在 XPath 中划分元素应该用一个斜杠/"来完成这是一个例子

In your case - dividing elements in the XPath should be done with one slash "/" Here is an example

driver.findElement(By.xpath("//android.widget.FrameLayout[1]/android.view.View[3]/android.widget.EditText[0]"));

这篇关于如果有多个具有相同类名且没有资源 ID 的元素,如何检查元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆