如果另一个元素包含文本,如何单击按钮

how to click a button if another element contains a text

我正在测试一个应用程序,我很难点击另一个元素包含文本的按钮,如下所示。

我想点击上面有“即将到来”字样的“详细信息”按钮。

我试过了,但是 none 成功了。

第一

for booking_card in context.driver.find_element_by_xpath("//*(@class='android.view.ViewGroup')"):
        if booking_card.text == "UPCOMING":
            context.driver.find_element_by_xpath("//*[contains(@text, 'DETAILS')]").click()

第二

context.driver.find_element_by_xpath("//*[contains(@text, 'UPCOMING')]//*[@text='DETAILS']").click()

第三 我尝试使用 parent, sibling and ancestor 方法找到详细信息按钮,但仍然失败。

//*[@class='android.view.ViewGroup']//*[contains(@text, 'UPCOMING')]/following-sibling::*[contains(@text, 'DETAILS')]

这是元素的层次结构:

非常感谢任何帮助,谢谢。 如果还有什么我需要解释的,请告诉我。

我找到了答案,所以方法是使用parent,following-sibling方法。 我所做的只是确保元素的层次结构是正确的,这样我才能找到我要找的东西。

这是我做的代码,很简单。

isPresent(context, MobileBy.XPATH, "//*[@text='UPCOMING']/parent::*[@class='android.view.ViewGroup']/parent::*[@class='android.view.ViewGroup']/following-sibling::*[@class='android.view.ViewGroup']//*[@text='DETAILS']").click()

所以我是这样做的,首先查看 'UPCOMING' 单词,然后我需要找到父元素,然后单击“详细信息”按钮。