Appium Android Python-使用文本属性查找元素



我试图使用driver.find_element_by_name("正在播放"(找到一个元素,但它抛出了异常。有没有一种方法可以通过属性值找到元素?在我的情况下,属性是"text",值是"Now Playing"。

以下是屏幕的XML源代码。确切地说,我正试图在"专辑"中的第三个选项卡上选择"艺术家"one_answers"正在播放"。

非常感谢您的时间和帮助。

选项卡的XML内容:

<android.widget.LinearLayout index="2" package="com.nmp.simp.phone" class="android.widget.LinearLayout" text="" resource-id="com.nmp.simp.phone:id/tab_control" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,1776][1080,1920]" displayed="true">
<android.widget.LinearLayout index="0" package="com.nmp.simp.phone" class="android.widget.LinearLayout" text="" resource-id="com.nmp.simp.phone:id/bg_tab" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,1776][360,1920]" displayed="true">
<android.widget.ImageView index="0" package="com.nmp.simp.phone" class="android.widget.ImageView" text="" resource-id="com.nmp.simp.phone:id/icon" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="true" bounds="[127,1778][232,1883]" displayed="true" />
<android.widget.TextView index="1" package="com.nmp.simp.phone" class="android.widget.TextView" text="Albums" resource-id="com.nmp.simp.phone:id/text" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[135,1874][225,1911]" displayed="true" />
</android.widget.LinearLayout>
<android.widget.LinearLayout index="1" package="com.nmp.simp.phone" class="android.widget.LinearLayout" text="" resource-id="com.nmp.simp.phone:id/bg_tab" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[360,1776][720,1920]" displayed="true">
<android.widget.ImageView index="0" package="com.nmp.simp.phone" class="android.widget.ImageView" text="" resource-id="com.nmp.simp.phone:id/icon" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[487,1778][592,1883]" displayed="true" />
<android.widget.TextView index="1" package="com.nmp.simp.phone" class="android.widget.TextView" text="Artists" resource-id="com.nmp.simp.phone:id/text" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[504,1874][576,1911]" displayed="true" />
</android.widget.LinearLayout>
<android.widget.LinearLayout index="2" package="com.nmp.simp.phone" class="android.widget.LinearLayout" text="" resource-id="com.nmp.simp.phone:id/bg_tab" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[720,1776][1080,1920]" displayed="true">
<android.widget.TextView index="0" package="com.nmp.simp.phone" class="android.widget.TextView" text="Now Playing" resource-id="com.nmp.simp.phone:id/text" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[826,1874][974,1911]" displayed="true" />
<android.widget.ImageView index="1" package="com.nmp.simp.phone" class="android.widget.ImageView" text="" resource-id="com.nmp.simp.phone:id/icon" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[847,1778][952,1883]" displayed="true" />
</android.widget.LinearLayout>
</android.widget.LinearLayout>

我可以通过以下方法找到具有text属性的元素:

  1. 搜索类名为的所有元素

    elements_list=driver.find_elements_by_class_name("android.widget.TextView"(

  2. 遍历元素列表,找到在"text"属性中具有"Now Playing"的元素。如果找到,请在元素上调用click((。

    对于ui_elements中的元素:如果str(element.get_attribute("text"(中的"正在播放":element.click((

我也在寻找这个,Rak的答案对我很有效。

messages = driver.find_elements_by_class_name('android.widget.TextView')
for i in messages:
if 'text you are looking for' in i.text:
i.click()

最新更新