如何选择最后一个元素并验证其属性

时间:2016-03-01 14:15:48

标签: java selenium-webdriver autotest

我写了一个测试,用户向另一个人发送消息。我需要选择每次发送的最后一条消息并验证其属性值。

    driver.findElement(By.xpath("//*[@id=\"chatView\"]/div/div[1]/div[1]")).sendKeys("Hello SMS");

    driver.findElement(By.xpath("//*[@id=\"chatView\"]/div/div[1]/div[1]")).sendKeys(Keys.ENTER);

    List<WebElement> webElements = driver.findElements(By.id("messagesContainer"));

    WebElement lastElement = getLast.driver.findElement(By.className("message-item"));

    System.out.println(lastElement);

    System.out.println(lastElement.getAttribute("data-deliverystatus"));

2 个答案:

答案 0 :(得分:0)

您可以使用列表的大小减一。

List<WebElement> webElements = driver.findElements(By.id("messagesContainer"));

WebElement lastElement = webElements.get(webElements.size() - 1)); 

// example test in testng, expecting SENT
Assert.assertEquals(lastElement.getAttribute("data-deliverystatus"), "SENT");

答案 1 :(得分:0)

findElements(By.id("messagesContainer"))将返回一个元素的列表,即消息的父元素。如果您需要使用

的消息
List<WebElement> messages = driver.findElements(By.className("message-item"));

要获取最后一个,请使用列表大小减去1的索引

List<WebElement> messages = driver.findElements(By.className("message-item"));
WebElement lastMessage = messages.get(messages.size() - 1);
Assert.assertEquals(lastMessage.getAttribute("data-deliverystatus"), "sent");