package com.algocrafts.chapter2; import org.apache.commons.lang.time.StopWatch; import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import java.util.concurrent.TimeUnit; import static org.junit.Assert.assertEquals; @Ignore public class TimeoutsTest { private StopWatch stopWatch = new StopWatch(); @Before public void startStopWatch() { stopWatch.start(); } @After public void print() { System.out.println("Taken " + stopWatch); } /** * This test will fail. */ @Test @Ignore public void failedTest() { WebDriver driver = new ChromeDriver(); driver.get("http://www.ticketfly.com"); driver.findElement(By.linkText("change location")).click(); driver.findElement(By.linkText("CANADA")).click(); WebElement element = driver.findElement(By.linkText("All Canada")); element.click(); assertEquals(0, driver.findElements(By.linkText("All Canada")).size()); assertEquals("Canada", driver .findElements(By.tagName("p")).stream().filter((WebElement e) -> e.getAttribute("class").equals("tools-location")) .findFirst().get() .findElement(By.tagName("a")) .findElement(By.tagName("strong")) .getText()); } @Test @Ignore public void implicitlyWait() { WebDriver driver = new ChromeDriver(); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.get("http://www.ticketfly.com"); driver.findElement(By.linkText("change location")).click(); driver.findElement(By.linkText("CANADA")).click(); WebElement element = driver.findElement(By.linkText("All Canada")); element.click(); assertEquals(0, driver.findElements(By.linkText("All Canada")).size()); assertEquals("Canada", driver .findElement(By.className("tools-location")) .findElement(By.tagName("a")) .findElement(By.tagName("strong")) .getText()); } @Test public void setScriptTimeout() { WebDriver driver = new ChromeDriver(); driver.get("http://www.ticketfly.com"); driver.manage().timeouts().setScriptTimeout(30, TimeUnit.SECONDS); JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver; javascriptExecutor.executeAsyncScript("alert('Hi')"); } @Test public void pageLoadTimeout() { WebDriver driver = new ChromeDriver(); driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS); driver.get("http://www.ticketfly.com"); } }