Java 在另一个元素中使用显式等待查找元素

Java 在另一个元素中使用显式等待查找元素,java,android,automation,appium,qa,Java,Android,Automation,Appium,Qa,我有以下代码: List<MobileElement> messages = driver.findElements (By.id ("body_bubble")); //find all messages MobileElement lastMessage = messages.get (messages.size () - 1); //get last message // xpath query to check if the message is delivered Str

我有以下代码:

List<MobileElement> messages = driver.findElements (By.id ("body_bubble")); //find all messages
MobileElement lastMessage = messages.get (messages.size () - 1); //get last message

// xpath query to check if the message is delivered
String xpathDeliveryStatus = ".//*[contains(@resource-id, 'delivered_indicator') or contains(@resource-id, 'read_indicator') or contains(@resource-id, 'sent_indicator')]"; 
MobileElement deliveryStatus = lastMessage.findElement (By.xpath (xpathDeliveryStatus));
List messages=driver.findElements(By.id(“body_bubble”)//查找所有邮件
MobileElement lastMessage=messages.get(messages.size()-1)//收到最后一条消息
//xpath查询以检查消息是否已传递
字符串xpathDeliveryStatus=“../*[包含(@resource id,'delivered_indicator')或包含(@resource id,'read_indicator'))或包含(@resource id,'sent_indicator')”;
MobileElement deliveryStatus=lastMessage.findElement(By.xpath(xpathDeliveryStatus));
我也希望这样做,只是希望使用显式等待查找
deliveryStatus
变量
因此,我想使用
wait.until(ExpectedConditions.visibilityOfElementLocated(By.locator))在
lastMessage
变量中查找
deliveryStatus
变量

我该怎么做

我不想使用一个巨大的Xpath。此外,我甚至不知道如何使用Xpath查找id为
body\u bubble
的最后一个元素,因为这些元素的数量不是固定的,而且总是在变化

p.S.例如,在Python中,我们可以使用构造函数中的元素而不是驱动程序来定义
WebDriverWait
WebDriverWait(webelement,self.timeout)

不幸的是,它在Java中不起作用。

基于,看起来我们可以使用
presenceOfNestedElementLocatedBy
在子元素上添加显式等待:

WebDriverWait wait = new WebDriverWait(driver, 15);

WebElement childElem = wait.until(
    ExpectedConditions.presenceOfNestedElementLocatedBy(lastMessage, By.xpath(xpathDeliveryStatus)));

非常感谢。还可以发现我可以使用这样的东西:
wait.until(ExpectedConditions.visibilityOf(lastMessage.findElement)(By.xpath(xpathDeliveryStatus))很高兴听到这对你有用
ExpectedConditions
类在所有语言中都非常灵活。