【问题标题】:Using appium and uiautomater to navigate through layout hierarchy使用 appium 和 uiautomater 浏览布局层次结构
【发布时间】:2016-11-04 18:50:57
【问题描述】:

我有一个列表视图,其中包含多个列表项。每个项目都是一个相对布局,它有一个图像按钮和一个嵌套线性布局,它有一个带有唯一文本的文本视图。我需要能够根据 textview 中的文本在列表中找到一个项目,然后单击它旁边的图像按钮。基于 UiAutomator API,看起来最好的方法是使用fromParent 方法,它允许您访问父视图的兄弟姐妹。滚动和查找 textview 时我没有遇到任何问题,但我未能成功为其父视图或图像按钮创建 UiSelector。

self.web_driver.find_element_by_android_uiautomator('new UiScrollable(
new UiSelector().resourceId("' + self.id_prefix + 'list_view")).scrollIntoView(
new UiSelector().text("' + identifier + '")) ;')

self.web_driver.find_element_by_android_uiautomator('new UiSelector().fromParent(
new UiSelector().text("' + identifier + '"))')

第一次调用完美无缺,我知道找到视图的选择器有效。问题是使用该 UiSelector 来获取父视图的 UiSelector。

UiSelector API, fromParent method

堆栈跟踪

Traceback (most recent call last):
  File "/.../test_suites/data_management.py", line 46, in test_delete
    self.delete(valid)
  File "/.../android_data_management.py", line 45, in delete
    'list_view"))')
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/appium/webdriver/webdriver.py", line 110, in find_element_by_android_uiautomator
    return self.find_element(by=By.ANDROID_UIAUTOMATOR, value=uia_string)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 712, in find_element
    {'using': by, 'value': value})['value']
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 201, in execute
    self.error_handler.check_response(response)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/appium/webdriver/errorhandler.py", line 29, in check_response
    raise wde
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/appium/webdriver/errorhandler.py", line 24, in check_response
    super(MobileErrorHandler, self).check_response(response)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: An element could not be located on the page using the given search parameters.

【问题讨论】:

    标签: android appium android-testing android-uiautomator python-appium


    【解决方案1】:

    我遇到了这个问题,我的解决方案没有使用 UI 自动化脚本,但如果它适合你,请尝试一下。

    1. 为相对布局内的数据创建 POJO。
    2. 获取列表视图元素。
    3. 获取列表视图中的每个相对视图元素
    4. 初始化元素/文本并将其分配给 POJO 对象,并将对象添加到 HashSet/Hashmap
    5. 根据文本确定所需的相对布局。
    6. 从对象中获取 ImageButton 元素并点击它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-18
      • 1970-01-01
      • 2021-07-07
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      相关资源
      最近更新 更多