나는 여러 목록 항목이있는 목록보기가 있습니다. 각 항목은 이미지 단추와 고유 텍스트가있는 텍스트 뷰가있는 중첩 선형 레이아웃이있는 상대적 레이아웃입니다. 텍스트 뷰의 텍스트를 기반으로 목록에서 항목을 찾은 다음 그 옆에있는 이미지 단추를 클릭 할 수 있어야합니다. UiAutomator API를 기반으로하는 가장 좋은 방법은 부모보기의 형제에 액세스 할 수있는 fromParent
메서드를 사용하는 것입니다. 스크롤 및 Textview 찾는 데 문제가 있지만 부모 뷰 또는 이미지 단추에 대한 UiSelector 만들지 못했습니다.appium 및 uiautomater를 사용하여 레이아웃 계층을 탐색합니다.
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
나는이 문제를 직면하고 당신을 위해 작동하는 경우 UI 자동화 스크립트를 사용하지 않습니다 내 솔루션은, 비록 그것을 시도를 제공
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.