使用 Python 在 Appium / Android 上选择一个元素,该元素与 UIAutomatorViewer 上的另一个元素具有相同的类和相同的索引
Posted
技术标签:
【中文标题】使用 Python 在 Appium / Android 上选择一个元素,该元素与 UIAutomatorViewer 上的另一个元素具有相同的类和相同的索引【英文标题】:Selecting an element on Appium / Android with Python that has same Class and Same Index of another element on UIAutomatorViewer 【发布时间】:2018-07-25 11:33:43 【问题描述】:我正在测试一个应用程序,在大多数屏幕上,我看到有些元素具有相同的类“android.widget.TextView”和相同的索引号“0”。所有其他属性也相同,唯一的例外是“文本”和“绑定”。
我有“Skip”、“Next”和“Skip Next 3”作为屏幕上的文本,除了 text 和 bounds 属性之外,它们具有相同的属性。我需要知道如何将appium指向所需的项目..说我想点击“下一步”,我该怎么做。我正在使用 Python 编写脚本。
【问题讨论】:
您需要了解如何使用 webdriver 使用带有“下一步”一词的按钮来定位小部件。我手边没有,但这是你需要的。 【参考方案1】:您可以搜索所有具有相同类名的匹配 Web 元素,这将返回匹配元素的列表。然后遍历找到的元素并比较它们的文本,例如:
for element in webdriver.find_elements_by_class_name('android.widget.TextView'):
if element.text == "Next":
element.click()
【讨论】:
【参考方案2】:按照 Chuk Ultima 说的做,但如果你有很多 TextView,可能需要一段时间。
你可以使用:
((AndroidDriver<MobileElement>)driver).findElementByAndroidUIAutomator("new UiSelector().text(\"Next\")");
更多用法见http://www.automationtestinghub.com/uiselector-android/
【讨论】:
【参考方案3】:好吧,在我的情况下,我终于解决了这个问题,使用遍历节点,比如我创建 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')
我知道这是一个乏味的过程,但目前这对我来说是解决方案。
【讨论】:
查看第 1 点:joecolantonio.com/2018/01/25/…以上是关于使用 Python 在 Appium / Android 上选择一个元素,该元素与 UIAutomatorViewer 上的另一个元素具有相同的类和相同的索引的主要内容,如果未能解决你的问题,请参考以下文章
如何配置 CodeceptJs 与 appium 一起在移动设备上进行网站测试
Python爬虫编程思想(128):使用Appium抓取移动数据--启动Appium服务