如何使用python获取Appium的ExpandableListView中的项数?

2024-05-18 11:16:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Appium和python实现Android应用程序的自动化。我有一个带有列表视图的屏幕,我想创建一个函数,遍历列表并返回列表中的名称,然后将其与预期列表进行比较(字母顺序很重要)。我想把这个函数用于可能有不同长度列表的屏幕,我需要先确定列表的长度吗。在

actual_names = []
expected_names = ["Abe", "Bob", "Carl"]
for num in range(1, 4):
    xpat = "//android.widget.ExpandableListView[1]/android.widget.FrameLayout[" + str(num) + "]/android.widget.RelativeLayout[1]/android.widget.TextView[1]"
    text = appium_driver.find_element_by_xpath(xpat).text
    actual_names.append(text)

assert expected_names == actual_names

这段代码可以工作,但只对一个屏幕和列表中的确切项目数有效。如果列表中的项数发生更改,则失败。这个很脆。我如何改进它并使它更具活力?我使用的是python3和appium1.5.3


Tags: 函数text视图应用程序列表屏幕nameswidget
1条回答
网友
1楼 · 发布于 2024-05-18 11:16:48
actual_names = []
expected_names = ["Abe", "Bob", "Carl"]
xpat = "//android.widget.ExpandableListView/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.TextView"
elements = appium_driver.find_elements_by_xpath(xpat)
for element in elements:
    text = element.text
    actual_names.append(text)

assert expected_names == actual_names

这里的区别在于我使用appium_driver.find_elements_by_xpath(),它将收集所有符合给定条件的元素,并将它们作为一个列表提供给您查看。在

当您想与具有相似路径的多个元素匹配时,xpath语句不应该使用索引号,所以我删除了它们。在

相关问题 更多 >