Web table là một trong nhưng dạng đối tượng thường gặp trên các trang web hiện nay. Đối tượng này dùng để hiển thị các dạng thông tin dữ liệu ở dạng lưới gồm cột và hàng tương tự như một ma trận 2 chiều.
- 
    Java8 là phiên bản có rất nhiều cải tiến đáng đồng tiền bát gạo. Một trong nhưng feature mới đó là là Streamgiúp làm việc với các danh sáchList
- 
    Comparatorclass giúp lấy giá trị lớn nhất và bé nhất từ một danh sách.
- 
    Kết hợp hàm findElements() -> List<WebElement>vàStreamgiúp chúng ta có thể dễ dàng làm việc với WebTable.
Trong ví dụ này mình có sử dụng thêm 1 thư viện đó là Lombok. Giúp viết các hàm Getter & Setter cũng nhưng các Constructor của một đối tượng đơn giản hơn.
Với 1 table có dạng dưới đây
| Last Name | First Name | Due | Web Site | Action | |
|---|---|---|---|---|---|
| Smith | John | jsmith@gmail.com | $50.00 | http://www.jsmith.com | edit delete | 
| Bach | Frank | fbach@yahoo.com | $51.00 | http://www.frank.com | edit delete | 
| Doe | Jason | jdoe@hotmail.com | $100.00 | http://www.jdoe.com | edit delete | 
| Conway | Tim | tconway@earthlink.net | $50.00 | http://www.timconway.com | edit delete | 
Test case :
- Kiểm tra ngừoi có có Duelớn nhất làDoe Jason
Thực hiện
- Tạo  class Person
@Data
public class Person {
    private final String lastName;
    private final String firstName;
    private final String email;
    private final float due;
    private final String website;
/**
Constructors and Getters Setters
**/
}- Tạo class TableTest:
public class TableTest {
    @Test
    void getPersonWhoHasMaxOfDue() {
        WebDriver driver = new ChromeDriver();
        driver.get("https://the-internet.herokuapp.com/tables");
        List<WebElement> rows = driver.findElements(By.xpath("//table[@id='table1']/tbody/tr"));
        List<Person> persons = rows.stream()
                .map(this::toPerson).collect(Collectors.toList());
        Person largestDuePerson = persons
                .stream()
                .max(Comparator.comparing(Person::getDue))
                .orElseThrow(NoSuchElementException::new);
        Assert.assertEquals(String.format("%s %s", largestDuePerson.getLastName(), largestDuePerson.getFirstName()), "Doe Jason");
    }
    /**
     * element is a row in table
     *
     * @param element
     * @return
     */
    private Person toPerson(WebElement element) {
        String lastName = element.findElements(By.tagName("td")).get(0).getText();
        String firstname = element.findElements(By.tagName("td")).get(1).getText();
        String email = element.findElements(By.tagName("td")).get(2).getText();
        Float due = Float.valueOf(element.findElements(By.tagName("td")).get(3).getText().trim().replace("$", ""));
        String website = element.findElements(By.tagName("td")).get(4).getText();
        return new Person(firstname, lastName, email, website, due);
    }
} Ha Do
                        
						 Ha Do