package org.uiautomation.ios.selenium; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WaitingConditions; import org.openqa.selenium.WebElement; import org.testng.Assert; import org.testng.annotations.Test; import java.util.List; import static java.util.concurrent.TimeUnit.SECONDS; import static org.openqa.selenium.TestWaiter.waitFor; import static org.openqa.selenium.WaitingConditions.pageTitleToBe; public class PageLoadingTest extends BaseSeleniumTest { @Test public void testShouldWaitForDocumentToBeLoaded() { driver.get(pages.simpleTestPage); Assert.assertEquals(driver.getTitle(), "Hello WebDriver"); } @Test public void testShouldFollowRedirectsSentInTheHttpResponseHeaders() { driver.get(pages.redirectPage); Assert.assertEquals(driver.getTitle(), "We Arrive Here"); } @Test public void testShouldFollowMetaRedirects() throws Exception { driver.get(pages.metaRedirectPage); Assert.assertEquals(driver.getTitle(), "We Arrive Here"); } @Test public void testShouldBeAbleToGetAFragmentOnTheCurrentPage() { driver.get(pages.xhtmlTestPage); driver.get(pages.xhtmlTestPage + "#text"); driver.findElement(By.id("id1")); } @Test(enabled = false) public void testShouldBeAbleToGetAFragmentOnTheCurrentPageBackForward() { driver.get(pages.xhtmlTestPage); driver.get(pages.xhtmlTestPage + "#text"); driver.findElement(By.id("id1")); driver.navigate().back(); driver.navigate().forward(); } @Test(enabled = false) // throw a timeout exception public void testShouldReturnWhenGettingAUrlThatDoesNotResolve() { try { // Of course, we're up the creek if this ever does get registered driver.get("http://www.thisurldoesnotexist.comx/"); } catch (IllegalStateException e) { } } @Test(enabled = false) // return by throwing a timeout. public void testShouldReturnWhenGettingAUrlThatDoesNotConnect() { // Here's hoping that there's nothing here. There shouldn't be driver.get("http://localhost:3001"); } @Test public void testShouldBeAbleToLoadAPageWithFramesetsAndWaitUntilAllFramesAreLoaded() { driver.get(pages.framesetPage); driver.switchTo().frame(0); WebElement pageNumber = driver.findElement(By.cssSelector("span[id='pageNumber']")); Assert.assertEquals(pageNumber.getText().trim(), "1"); driver.switchTo().defaultContent().switchTo().frame(1); pageNumber = driver.findElement(By.cssSelector("span[id='pageNumber']")); Assert.assertEquals(pageNumber.getText().trim(), "2"); } @Test(enabled = false) public void testShouldDoNothingIfThereIsNothingToGoBackTo() { String originalTitle = driver.getTitle(); driver.get(pages.formPage); driver.navigate().back(); // stuck here. // Assert.assertEquals(driver.getTitle(), anyOf(equalTo(originalTitle), // equalTo("We Leave From Here"))); } @Test public void testShouldBeAbleToNavigateBackInTheBrowserHistory() { driver.get(pages.formPage); driver.findElement(By.id("imageButton")).submit(); Assert.assertEquals(driver.getTitle(), "We Arrive Here"); driver.navigate().back(); Assert.assertEquals(driver.getTitle(), "We Leave From Here"); } /* @Ignore(value = {SAFARI, SELENESE}, issues = {3771}) */ @Test public void testShouldBeAbleToNavigateBackInTheBrowserHistoryInPresenceOfIframes() throws InterruptedException { driver.get(pages.xhtmlTestPage); driver.findElement(By.name("sameWindow")).click(); waitFor(pageTitleToBe(driver, "This page has iframes")); Assert.assertEquals(driver.getTitle(), ("This page has iframes")); driver.navigate().back(); Assert.assertEquals(driver.getTitle(), ("XHTML Test Page")); } /* @Ignore(value = {ANDROID, SAFARI, SELENESE}, issues = {3771}) */ @Test public void testShouldBeAbleToNavigateForwardsInTheBrowserHistory() { driver.get(pages.formPage); driver.findElement(By.id("imageButton")).click(); waitFor(pageTitleToBe(driver, "We Arrive Here")); Assert.assertEquals(driver.getTitle(), ("We Arrive Here")); driver.navigate().back(); waitFor(pageTitleToBe(driver, "We Leave From Here")); Assert.assertEquals(driver.getTitle(), ("We Leave From Here")); driver.navigate().forward(); waitFor(pageTitleToBe(driver, "We Arrive Here")); Assert.assertEquals(driver.getTitle(), ("We Arrive Here")); } /* * @Ignore(value = {IE, CHROME, SELENESE, IPHONE, OPERA, ANDROID, SAFARI, * OPERA_MOBILE}, reason = "Safari: does not support insecure SSL") */ @Test(enabled = false) public void testShouldBeAbleToAccessPagesWithAnInsecureSslCertificate() { // TODO(user): Set the SSL capability to true. //String url = GlobalTestEnvironment.get().getAppServer().whereIsSecure("simpleTest.html"); //driver.get(url); //Assert.assertEquals(driver.getTitle(), ("Hello WebDriver")); } /* * @Ignore({ANDROID, CHROME, HTMLUNIT, IE, IPHONE, OPERA, OPERA_MOBILE, * SAFARI, SELENESE}) */ @Test(enabled = false) public void shouldBeAbleToDisableAcceptOfInsecureSslCertsWithRequiredCapability() { // TODO: Resolve why this test doesn't work on the remote server /* * assumeTrue(TestUtilities.isLocal()); * * DesiredCapabilities requiredCaps = new DesiredCapabilities(); * requiredCaps.setCapability(ACCEPT_SSL_CERTS, false); WebDriverBuilder * builder = new WebDriverBuilder().setRequiredCapabilities(requiredCaps); * localDriver = builder.get(); * * String url = * GlobalTestEnvironment.get().getAppServer().whereIsSecure("simpleTest.html" * ); localDriver.get(url); * * assertThat(localDriver.getTitle(), not("Hello WebDriver")); */ } @Test public void testShouldBeAbleToRefreshAPage() { driver.get(pages.xhtmlTestPage); driver.navigate().refresh(); Assert.assertEquals(driver.getTitle(), ("XHTML Test Page")); } /** * @throws Exception If the test fails. * @see <a href="http://code.google.com/p/selenium/issues/detail?id=208"> Issue 208</a> * * This test often causes the subsequent test to fail, in Firefox, on Linux, so we need a new * driver after it. * @see <a href="http://code.google.com/p/selenium/issues/detail?id=2282">Issue 2282</a> */ /* * @Ignore(value = {IE, SELENESE, IPHONE, OPERA, ANDROID, SAFARI, * OPERA_MOBILE}, reason = "Safari: issue 4062; Others: Untested user-agents", * issues = {4062}) * * @NoDriverAfterTest * * @JavascriptEnabled */ @Test(enabled = false) public void testShouldNotHangIfDocumentOpenCallIsNeverFollowedByDocumentCloseCall() throws Exception { driver.get(pages.documentWrite); // If this command succeeds, then all is well. WebElement body = driver.findElement(By.tagName("body")); waitFor(WaitingConditions.elementTextToContain(body, "world")); } @Test(enabled = false) public void testShouldNotWaitIndefinitelyIfAnExternalResourceFailsToLoad() { String slowPage = appServer.whereIs("slowLoadingResourcePage.html"); /* * Capabilities current = ((HasCapabilities) driver).getCapabilities(); * DesiredCapabilities caps = new DesiredCapabilities(current); * caps.setCapability("webdriver.loading.strategy", "unstable"); WebDriver * testDriver = new WebDriverBuilder().setDesiredCapabilities(caps).get(); */ long start = System.currentTimeMillis(); driver.get(slowPage); // We discard the element, but want a check to make sure the GET actually // completed. driver.findElement(By.id("peas")); long end = System.currentTimeMillis(); // The slow loading resource on that page takes 6 seconds to return. If we // waited for it, our load time should be over 6 seconds. long duration = end - start; // driver.quit(); // Clean up before making assertions Assert.assertTrue(duration < 5 * 1000, "Took too long to load page: " + duration); } /* * @Ignore(value = {ANDROID, CHROME, HTMLUNIT, IE, IPHONE, OPERA, SAFARI, * SELENESE, OPERA_MOBILE}, reason = * "Not implemented; Safari: see issue 687, comment 41", issues = {687}) * * @NeedsLocalEnvironment */ @Test(enabled = false, expectedExceptions = TimeoutException.class) public void testShouldTimeoutIfAPageTakesTooLongToLoad() { driver.manage().timeouts().pageLoadTimeout(2, SECONDS); try { // Get the sleeping servlet with a pause of 5 seconds String slowPage = appServer.whereIs("sleep?time=5"); driver.get(slowPage); Assert.fail("I should have timed out"); } finally { driver.manage().timeouts().pageLoadTimeout(-1, SECONDS); } } }