2016-10-26 3 views
0

저는 Appium과 Python을 사용하여 Android 앱을 자동화하려고합니다. 목록보기가있는 화면이 있고 목록을 반복하고 목록의 이름을 반환하는 함수를 만든 다음 예상 목록 (알파벳순 문제)과 비교합니다. 길이가 다른 목록이있는 화면에이 기능을 사용하고 싶습니다. 먼저 목록의 길이를 결정할 수 있어야합니까?Python을 사용하여 Appium 용 ExpandableListView의 항목 수를 얻는 방법은 무엇입니까?

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 

이 코드는 작동하지만 목록의 항목 수와 정확한 숫자는 하나의 화면에만 적용됩니다. 목록의 항목 수가 변경되면 실패합니다. 이것은 매우 부서지기 쉽습니다. 어떻게 개선하고보다 역동적으로 만들 수 있습니까? 나는 주어진 조건과 일치하는 모든 요소를 ​​수집하고보고하는 목록으로 그들에게 줄 것이다, appium_driver.find_elements_by_xpath()을 사용하고 있음을 여기서 차이점은 파이썬 3 Appium 1.5.3

답변

1
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 

을 사용하고 있습니다.

비슷한 경로를 가진 여러 요소를 일치 시키려면 xpath 문에서 인덱스 번호를 사용해서는 안되므로이를 제거해야합니다.

+0

이것은 효과가 있습니다. 정말 고마워. 나는 인덱스 번호없이 xpaths를 사용할 수 있는지 몰랐다. – Cody

관련 문제