Package ch.inftec.ee.webtest

Source Code of ch.inftec.ee.webtest.WebTestTest$GoogleSeleniumTest

package ch.inftec.ee.webtest;

import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;

import ch.inftec.ju.ee.webtest.WebTest;
import ch.inftec.ju.testing.db.JuAssumeUtils;
import ch.inftec.ju.util.SystemPropertyTempSetter;
import ch.inftec.ju.util.TestUtils;

/**
* Test web test execution using WebTest base class.
* <p>
* We'll use a nested class that extends WebTest so we can simulate the
* driver selection by overriding system properties.
* @author Martin
*
*/
public class WebTestTest {
//  @Test
////  @Ignore
//  public void canOpenGoogle_andSearchForCheese_usingFirefox() {
//     // Create a new instance of the Firefox driver
//        // Notice that the remainder of the code relies on the interface,
//        // not the implementation.
//        WebDriver driver = new FirefoxDriver();
//
//        this.googleForCheese(driver);
//  }
 
  @Test
  public void canOpenGoogle_andSearchForCheese_usingChrome() {
    JuAssumeUtils.chromeIsAvailable();
    JuAssumeUtils.internetIsAvailable();
   
    try (SystemPropertyTempSetter ts = new SystemPropertyTempSetter()) {
      ts.setProperty("ju-testing-ee.selenium.driver", "Chrome");
     
      TestUtils.runJUnitTests(GoogleSeleniumTest.class);
    }   
  }
 
  @Test
  public void canOpenGoogle_andSearchForCheese_usingHtmlUnit() {
    JuAssumeUtils.internetIsAvailable();
   
    try (SystemPropertyTempSetter ts = new SystemPropertyTempSetter()) {
      ts.setProperty("ju-testing-ee.selenium.driver", "HtmlUnit");
      ts.setProperty("ju-testing-ee.selenium.htmlUnit.enableJavascript", "false");
     
      TestUtils.runJUnitTests(GoogleSeleniumTest.class);
    }   
  }
 
  @Test
  public void canOpenGoogle_andSearchForCheese_usingHtmlUnitAndChrome() {
    JuAssumeUtils.chromeIsAvailable();
    JuAssumeUtils.internetIsAvailable();
   
    try (SystemPropertyTempSetter ts = new SystemPropertyTempSetter()) {
      ts.setProperty("ju-testing-ee.selenium.driver", "HtmlUnit,Chrome");
      ts.setProperty("ju-testing-ee.selenium.htmlUnit.enableJavascript", "false");
     
      TestUtils.runJUnitTests(GoogleSeleniumTest.class);
    }
  }
 
  public static class GoogleSeleniumTest extends WebTest {
    @Test
    public void canGoogle_forCheese() {
      // And now use this to visit Google
          driver.get("http://www.google.com");
          // Alternatively the same thing can be done like this
          // driver.navigate().to("http://www.google.com");

          // Find the text input element by its name
          WebElement element = driver.findElement(By.name("q"));

          // Enter something to search for
          element.sendKeys("Cheese!"); //

          // Now submit the form. WebDriver will find the form for us from the element
          element.submit();

          // Check the title of the page
          logger.info("Page title is: " + driver.getTitle());
         
          // Google's search is rendered dynamically with JavaScript.
          // Wait for the page to load, timeout after 10 seconds
          (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
              public Boolean apply(WebDriver d) {
                  return d.getTitle().toLowerCase().startsWith("cheese"); //Somehow, Chrome doesn't receive the '!'...
              }
          });

          // Should see: "cheese! - Google Search"
          logger.info("Page title is: " + driver.getTitle());
    }
  }
}
TOP

Related Classes of ch.inftec.ee.webtest.WebTestTest$GoogleSeleniumTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.