/**
  * Verifies if an element is visible. Continue with tests even if false.
  *
  * @param expression boolean expression to evaluate
  * @param msg message to log on failure
  */
 public void waitForVisible(WebElement elementToBeVisible) {
   Checks.notNull("elementToBeVisible", elementToBeVisible);
   try {
     wait.until(ExpectedConditions.visibilityOf(elementToBeVisible));
   } catch (Exception e) {
     Exceptions.chuck(e);
   }
 }
 /**
  * Wait for some number of seconds.
  *
  * @param seconds A number of seconds
  */
 public static void waitFor(double seconds) {
   Checks.nonNegative("seconds", seconds);
   if (seconds > 1000 * 60 * 60) {
     throw new Error(
         "I don't think you really want to wait for " + (seconds / 60000) + " minutes");
   }
   try {
     Thread.sleep((long) (seconds * 1000));
   } catch (InterruptedException ex) {
     Logger.getLogger(Utils.class.getName()).log(Level.INFO, "Exception waiting", ex);
   }
 }
 /**
  * Instantiate an object,using Selenium's PageFactory, and injecting any fields annotated with
  * @Inject by Guice.
  *
  * <p>This is useful if you have caused the browser page to refresh and you need to rebuild a
  * model of the window's page.
  *
  * @param <T> A type
  * @param type The object to create
  * @return A new instance of this type
  */
 public <T> T instantiate(Class<T> type) {
   Checks.notNull("type", type);
   T result = PageFactory.initElements(driver, type);
   deps.injectMembers(result);
   return result;
 }