2016-03-07 86 views
0

我需要等待,直到属性收到值,并得到关于“直到”的错误。我做错了什么?谢谢如何等待属性? java + webdriver

List<WebElement> messages = driver.findElements(By.className("message-item")); 
//select last message 
WebElement lastMessage = messages.get(messages.size() - 1); 
//wait for last message attribute received failed 
WebDriverWait waitLastMessage = new WebDriverWait(driver, 10); 
waitLastMessage.until(lastMessage.getAttribute("data-deliverystatus").contains("failed")); 
//here i check vaules of attribute 
Assert.assertEquals(lastMessage.getAttribute("data-deliverystatus"), "failed"); 

回答

0

until方法接收ExpectedConditions,没有任何boolean。你可以做类似的事情(未经测试)

private ExpectedCondition<Boolean> waitForAttribute(final WebElement element) { 
    return new ExpectedCondition<Boolean>() { 
     public Boolean apply(WebDriver driver) { 
      return element.getAttribute("data-deliverystatus").contains("failed"); 
     } 
    }; 
} 

WebDriverWait waitLastMessage = new WebDriverWait(driver, 10); 
waitLastMessage.until(waitForAttribute);