Package org.rstudio.studio.selenium

Source Code of org.rstudio.studio.selenium.DialogTestUtils

/*
* DialogTestUtils.java
*
* Copyright (C) 2009-13 by RStudio, Inc.
*
* Unless you have received this program directly from RStudio pursuant
* to the terms of a commercial license agreement with RStudio, then
* this program is licensed to you under the terms of version 3 of the
* GNU Affero General Public License. This program is distributed WITHOUT
* ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
* AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details.
*
*/
package org.rstudio.studio.selenium;

import java.util.List;

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.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class DialogTestUtils
{
   public static WebElement waitForModalToAppear(WebDriver driver) {
      return (new WebDriverWait(driver, 2))
        .until(ExpectedConditions.presenceOfElementLocated(
              By.className("gwt-DialogBox-ModalDialog")));
   }
  
   public static void waitForModalToDisappear(final WebDriver driver) {
      (new WebDriverWait(driver, 5)).until(new ExpectedCondition<Boolean>() {
         public Boolean apply(WebDriver d) {
            List<WebElement>elements = driver.findElements(By.className(
                  "gwt-DialogBox-ModalDialog"));
            return elements.size() == 0;
         }
      });
   }

   public static void respondToModalDialog(WebDriver driver,
                                           String response) {
      WebElement dialog = waitForModalToAppear(driver);
     
      // Find the button requested and invoke it
      List<WebElement> buttons =
            dialog.findElements(By.className("gwt-Button-DialogAction"));
      for (WebElement button: buttons) {
         if (button.getText().equals(response)) {
            button.click();
            break;
         }
      }
     
      (new WebDriverWait(driver, 5)).until(
            ExpectedConditions.stalenessOf(dialog));
   }
  
   // Unfortunately even after the dialog is loaded, the textbox into which
   // we need to type may not yet be ready for input. Wait for it to be
   // present and focused before continuing.
   public static void waitForFocusedInput(final WebDriver driver,
                                          final WebElement dialog) {
      (new WebDriverWait(driver, 5)).until(new ExpectedCondition<Boolean>() {
          public Boolean apply(WebDriver d) {
             List<WebElement>elements = dialog.findElements(By.tagName(
                   "input"));
             if (elements.size() > 0 &&
                 driver.switchTo().activeElement().equals(elements.get(0))) {
                return true;
             }
             return false;
          }
      });
   }
}
TOP

Related Classes of org.rstudio.studio.selenium.DialogTestUtils

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.