我正在测试一个应用程序,在大多数屏幕上,我看到有些元素具有相同的类“android.widget.TextView”和相同的索引号“0”。所有其他属性也相同,唯一的例外是“文本”和“绑定”。
我有“跳过”、“下一个”和“跳过下一个 3”作为屏幕上的文本,除了文本和边界属性之外,它们具有相同的属性。我需要知道如何将appium指向所需的项目..说我想点击“下一步”,我该怎么做。我正在使用 Python 编写脚本。
我正在测试一个应用程序,在大多数屏幕上,我看到有些元素具有相同的类“android.widget.TextView”和相同的索引号“0”。所有其他属性也相同,唯一的例外是“文本”和“绑定”。
我有“跳过”、“下一个”和“跳过下一个 3”作为屏幕上的文本,除了文本和边界属性之外,它们具有相同的属性。我需要知道如何将appium指向所需的项目..说我想点击“下一步”,我该怎么做。我正在使用 Python 编写脚本。
您可以搜索具有相同类名的所有匹配 Web 元素,这将返回匹配元素的列表。然后遍历找到的元素并比较它们的文本,例如:
for element in webdriver.find_elements_by_class_name('android.widget.TextView'):
if element.text == "Next":
element.click()
像 Chuk Ultima 所说的那样做会起作用,但如果你有很多 TextView 可能需要一段时间。
您可以使用:
((AndroidDriver<MobileElement>)driver).findElementByAndroidUIAutomator("new UiSelector().text(\"Next\")");
在http://www.automationtestinghub.com/uiselector-android/中查看更多用法
好吧,在我的情况下,我终于解决了这个问题,使用像我创建 xpath 那样遍历节点来从特定位置获取文本(时间值),如下所示:
Time = self.driver.find_element_by_xpath('//android.widget.LinearLayout[@index=2]/android.view.ViewGroup[@index=0]/android.view.ViewGroup[@index=0]/android.view.ViewGroup[@index=0]/android.view.ViewGroup[@index=3]/android.view.ViewGroup[@index=0]/android.widget.TextView[@index=0]').get_attribute('text')
我知道这是一个乏味的过程,但目前这对我来说是解决方案。