如何找到在Appium Xpath中找到的元素的上一个元素?

时间:2020-04-05 10:52:35

标签: selenium xpath appium

问题: 我在确定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

这是另一个屏幕快照,其中包含我需要的元素的更多详细信息:

enter image description here

我正在使用Appium 1.15.1和Python 3.7。我不认为这很重要,因为这是Xpath的问题。

我希望我能提供足够的细节来找到解决方案。从今天早上很早开始,我就在为此工作。

1 个答案:

答案 0 :(得分:0)

您可以通过在xpath中使用其文本直接找到该元素,例如:

element = driver.find_element_by_xpath("//*[contains(@text,'AlfangeAcademy')]")