Как найти предыдущий элемент, найденный в Appium Xpath? - PullRequest
1 голос
/ 05 апреля 2020

ПРОБЛЕМА: У меня проблема с идентификацией элемента в Appium.

Поскольку я не могу идентифицировать элемент, мне удалось идентифицировать следующий элемент по xpath. Давайте назовем его элементом «FOUND».

ТАК, теперь я пытаюсь получить предыдущий элемент из этого элемента «FOUND».

ДЕТАЛИ: enter image description here

На этом скриншоте выше вы можете видеть элементы, о которых я говорю. Чтобы найти элемент «FOUND», я зацикливаю все элементы с классом «android .widget.TextView», извлекаю атрибут «text» и сопоставляю его со строкой «Website». Затем из элемента FOUND я пытаюсь найти нужный мне элемент. Я пробовал так много разных выражений, но мне не удалось его получить. Я использую «попробовать, кроме», чтобы попытаться скрыть это, но безуспешно.

вот код:

elements_of_profile_detail_page = driver.find_elements_by_class_name("android.widget.TextView")
list_xpath=[
    "preceding-sibling::android.widget.TextView[1]",
    "preceding-sibling::android.widget.TextView[1]",
    "(/preceding-sibling::android.widget.TextView)[1]",
    "/*preceding-sibling::android.widget.TextView[1]",
    "(/*preceding-sibling::android.widget.TextView)[1]",
    "(preceding-sibling::android.widget.TextView)[1]",
    "../android.widget.TextView[0]",
    "preceding-sibling::*[1]",
    "/preceding-sibling::android.widget.TextView",
    "preceding-sibling::android.widget.TextView",
    "(preceding-sibling::android.widget.TextView)[1]"
]
i=0
while i<len(list_xpath):
    try:
        website = element_of_profile_detail_page.find_element_by_xpath(list_xpath[i]).get_attribute('text')
        print(f"website : {website}")
        print(f"xpath : {xpath}")
        break
    except:
        print("It didn't work!")
        i+=1

А вот еще один скриншот с более подробной информацией об элементе I нужно:

enter image description here

Я использую Appium 1.15.1 и Python 3.7. Я не думаю, что это важно, поскольку это вопрос Xpath.

Я надеюсь, что дал достаточно подробностей, чтобы найти решение. Я работаю над этим с самого раннего утра.

1 Ответ

0 голосов
/ 05 апреля 2020

Вы можете напрямую найти элемент, используя его текст в xpath, например:

element = driver.find_element_by_xpath("//*[contains(@text,'AlfangeAcademy')]")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...