package com.algocrafts; import com.algocrafts.browsers.Browsers; import com.algocrafts.locators.Locators; import com.algocrafts.pages.Page; import com.algocrafts.pages.Person; import com.algocrafts.selectors.Xpath; import com.algocrafts.selenium.Element; import com.algocrafts.selenium.Locator; import com.algocrafts.table.Table; import com.algocrafts.table.TableContents; import com.google.common.collect.Sets; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; import java.util.Iterator; import java.util.stream.Stream; import static com.algocrafts.converters.GetText.TEXT; import static com.algocrafts.converters.StringToInt.PARSE_INT; import static com.algocrafts.locators.Locators.element; import static com.algocrafts.selectors.TagName.TABLE; import static com.google.common.collect.Sets.newHashSet; @Ignore public class TableTest { private TableContents<Person> expected = new TableContents<>( newHashSet("Number", "First Name", "Last Name", "Points"), Sets.<Person>newHashSet( new Person(4, "Jill", "Smith", 50) , new Person(3, "Adam", "Johnson", 67) , new Person(2, "John", "Doe", 80) , new Person(1, "Eve", "Jackson", 94) ) ); @Test public void testReadFromTable() { Browsers browser = Browsers.FIREFOX; browser.get("http://www.w3schools.com/html/html_tables.asp"); Page page = new Page(browser); Locator<Page, Element> locator = Locators.<Page>element(Xpath.TABLE_CONTAINER) .andThen(element(TABLE)); Locator<Stream<Element>, Person> mapper = (stream) -> { Iterator<String> iterator = stream.map(TEXT).iterator(); return new Person(PARSE_INT.locate(iterator.next()), iterator.next(), iterator.next(), PARSE_INT.locate(iterator.next())); }; Table<Person, Page> table = new Table<>(page, locator, mapper); assertTrue(expected, expected.equals(table.getContents())); browser.close(); } private void assertTrue(Object diff, boolean pass) { if (!pass) { Assert.assertTrue(diff.toString(), pass); } } }