private boolean isAFormElement(WebElement webElement) {
   if ((webElement == null) || (webElement.getTagName() == null)) {
     return false;
   }
   String tag = webElement.getTagName().toLowerCase();
   return HTML_FORM_TAGS.contains(tag);
 }
 private WebElement findElement(final By locator) {
   (new WebDriverWait(driver, 30, 1000))
       .until(ExpectedConditions.presenceOfElementLocated(locator));
   (new WebDriverWait(driver, 30, 1000))
       .until(ExpectedConditions.visibilityOfElementLocated(locator));
   WebElement element = driver.findElement(locator);
   if (element.isEnabled() == false)
     ((JavascriptExecutor) driver).executeScript("arguments[0].disabled = false", element);
   return element;
 }
 private List<WebElementFacade> webElementFacadesFrom(List<WebElement> nestedElements) {
   List<WebElementFacade> results = Lists.newArrayList();
   for (WebElement element : nestedElements) {
     results.add(
         wrapWebElement(
             driver,
             element,
             timeoutInMilliseconds(),
             waitForTimeoutInMilliseconds,
             element.toString()));
   }
   return results;
 }
  public void optionalClick(final By locator) {
    WebElement we = null;
    try {
      we = driver.findElement(locator);
      we.click();
    } catch (StaleElementReferenceException ser) {

    } catch (NoSuchElementException nse) {

    } catch (Exception e) {
      // staticlogger.info( e.getMessage() );
    }
  }
  /**
   * Is this web element present and visible on the screen This method will not throw an exception
   * if the element is not on the screen at all. If the element is not visible, the method will wait
   * a bit to see if it appears later on.
   */
  @Override
  public boolean isVisible() {

    try {
      WebElement element = getElement();
      return (element != null) && (element.isDisplayed());
    } catch (ElementNotVisibleException e) {
      return false;
    } catch (NoSuchElementException e) {
      return false;
    } catch (StaleElementReferenceException se) {
      return false;
    }
  }
  public boolean isPresent() {
    if (driverIsDisabled()) {
      return false;
    }

    try {
      WebElement element = getElement();

      if (element == null) {
        return false;
      }
      element.isDisplayed();
      return true;
    } catch (ElementNotVisibleException e) {
      return true;
    } catch (NotFoundException e) {
      return false;
    } catch (ElementNotFoundAfterTimeoutError timeoutError) {
      return false;
    }
  }
 private boolean hasValueAttribute(WebElement webElement) {
   String tag = webElement.getTagName().toLowerCase();
   return HTML_ELEMENTS_WITH_VALUE_ATTRIBUTE.contains(tag);
 }
 private boolean isDisabledField(WebElement webElement) {
   return (isAFormElement(webElement) && (!webElement.isEnabled()));
 }
 public String convert(WebElement from) {
   return from.getText();
 }
 /** Does this element exactly match given text? */
 @Override
 public boolean containsOnlyText(final String value) {
   WebElement element = getElement();
   return ((element != null) && (element.getText().equals(value)));
 }
 public static <T extends WebElementFacade> T wrapWebElement(
     final WebDriver driver, final WebElement element, final long timeout) {
   return (T)
       new WebElementFacadeImpl(driver, null, element, timeout, timeout)
           .foundBy(element.toString());
 }
  private void test_reject_submission(WebDriver driver) {
    // Login
    CStudioSeleniumUtil.try_login(
        driver, CStudioSeleniumUtil.AUTHOR_USER, CStudioSeleniumUtil.AUTHOR_PASSWORD, true);

    // Navigate to Dashboard
    CStudioSeleniumUtil.navigate_to_dashboard(driver);

    // Edit 'index' page
    CStudioSeleniumUtil.edit_index_page(driver);

    // Switch to 'Entry' window
    CStudioSeleniumUtil.switch_to_window(driver, "Entry");

    // Change title
    WebElement element =
        driver.findElement(
            By.id("accordion$pageSettings$internalTitle$input-counted$xforms-input-1"));
    element.clear();
    element.sendKeys("Acme Home - Updated");

    // Save changes
    CStudioSeleniumUtil.click_on(driver, By.id("formSaveButton"));

    // Wait for page to refresh
    new WebDriverWait(driver, CStudioSeleniumUtil.LONG_TIMEOUT)
        .until(
            new ExpectedCondition<Boolean>() {
              public Boolean apply(WebDriver d) {
                return d.getWindowHandles().size() == 1;
              }
            });

    // Switch to 'Crafter Studio' window
    CStudioSeleniumUtil.switch_to_window(driver, "Crafter Studio");

    // Check updated item
    CStudioSeleniumUtil.wait_until_displayed(
        driver, CStudioSeleniumUtil.SHORT_TIMEOUT, By.id("component-1-4-/site/website/index.xml"));
    CStudioSeleniumUtil.click_on(driver, By.id("component-1-4-/site/website/index.xml"));

    // Open confirm 'Submit to Go Live' dialog
    CStudioSeleniumUtil.wait_until_displayed(
        driver, CStudioSeleniumUtil.SHORT_TIMEOUT, By.xpath("//a[text()='Submit to Go Live']"));
    CStudioSeleniumUtil.click_on(driver, By.xpath("//a[text()='Submit to Go Live']"));

    // Confirm submission (on dialog)
    CStudioSeleniumUtil.wait_until_displayed(
        driver, CStudioSeleniumUtil.SHORT_TIMEOUT, By.id("golivesubmitButton"));
    CStudioSeleniumUtil.click_on(driver, By.id("golivesubmitButton"));

    // Close dialog
    CStudioSeleniumUtil.wait_until_displayed(
        driver, CStudioSeleniumUtil.SHORT_TIMEOUT, By.id("acnOKButton"));
    CStudioSeleniumUtil.click_on(driver, By.id("acnOKButton"));

    new WebDriverWait(driver, CStudioSeleniumUtil.SHORT_TIMEOUT)
        .until(
            new ExpectedCondition<Boolean>() {
              public Boolean apply(WebDriver d) {
                return d.findElement(By.tagName("body")).getText().contains("Log Out");
              }
            });

    // Log out and login as admin
    CStudioSeleniumUtil.logout_from_cs(driver);
    CStudioSeleniumUtil.try_login(
        driver, CStudioSeleniumUtil.ADMIN_USER, CStudioSeleniumUtil.ADMIN_PASSWORD, true);

    // Navigate to Dashboard
    CStudioSeleniumUtil.navigate_to_dashboard(driver);

    // Wait for In-Progress items to load
    CStudioSeleniumUtil.wait_until_displayed(
        driver, CStudioSeleniumUtil.SHORT_TIMEOUT, By.id("/site/website/index.xml"));
    CStudioSeleniumUtil.click_on(driver, By.id("/site/website/index.xml"));

    // Open 'Reject' dialog
    CStudioSeleniumUtil.wait_until_displayed(
        driver, CStudioSeleniumUtil.SHORT_TIMEOUT, By.xpath("//a[text()='Reject']"));
    CStudioSeleniumUtil.click_on(driver, By.xpath("//a[text()='Reject']"));

    // Select a reason to reject
    CStudioSeleniumUtil.wait_until_displayed(
        driver, CStudioSeleniumUtil.SHORT_TIMEOUT, By.id("rejectReasonDropDown"));
    Select select = new Select(driver.findElement(By.id("rejectReasonDropDown")));
    select.selectByVisibleText("Not Approved");

    // Send rejection
    CStudioSeleniumUtil.click_on(driver, By.id("golivesubmitButton"));

    // Close dialog
    CStudioSeleniumUtil.wait_until_displayed(
        driver, CStudioSeleniumUtil.SHORT_TIMEOUT, By.id("acnOKButton"));
    CStudioSeleniumUtil.click_on(driver, By.id("acnOKButton"));

    // As author user in separate browser (or log-out and log in), refresh dashboard
    CStudioSeleniumUtil.logout_from_cs(driver);
    CStudioSeleniumUtil.try_login(
        driver, CStudioSeleniumUtil.AUTHOR_USER, CStudioSeleniumUtil.AUTHOR_PASSWORD, true);

    // Navigate to Dashboard
    CStudioSeleniumUtil.navigate_to_dashboard(driver);

    // Check updated item
    CStudioSeleniumUtil.wait_until_displayed(
        driver, CStudioSeleniumUtil.SHORT_TIMEOUT, By.id("component-1-4-/site/website/index.xml"));
    CStudioSeleniumUtil.click_on(driver, By.id("component-1-4-/site/website/index.xml"));

    // Wait for context nav 'In Progress' menu
    CStudioSeleniumUtil.wait_until_displayed(
        driver, CStudioSeleniumUtil.SHORT_TIMEOUT, By.xpath("//div[text()=' In Progress:']"));

    // Close driver
    CStudioSeleniumUtil.exit(driver);
  }
Example #13
0
  private void test_image_picker(WebDriver driver) {
    // Check both files exist
    File f1 = null;
    File f2 = null;
    try {
      ClassLoader cl = ImagePickerTest.class.getClassLoader();
      f1 = new File(cl.getResource("image_picker_1.png").toURI());
      assertTrue(f1.exists());
      f2 = new File(cl.getResource("image_picker_2.png").toURI());
      assertTrue(f2.exists());
    } catch (URISyntaxException e) {
      e.printStackTrace();
    }
    assertNotNull(f1);
    assertNotNull(f2);

    // Login
    CStudioSeleniumUtil.try_login(
        driver, CStudioSeleniumUtil.AUTHOR_USER, CStudioSeleniumUtil.AUTHOR_PASSWORD, true);

    // Navigate to Widget
    CStudioSeleniumUtil.navigate_to_image_picker_widget(driver);

    // Upload right file size
    CStudioSeleniumUtil.click_on(driver, By.id("xf-4$xf-20$imageSrcAltTextTest-imageButton"));

    // Check popup dialog appears
    WebElement popup = driver.findElement(By.id("cstudio-wcm-popup-div_c"));
    assertTrue(popup.isDisplayed());

    WebElement input =
        driver.findElement(By.xpath("/html/body/div[3]/div/div[2]/div/div/div/form/input"));
    input.sendKeys(f1.getAbsolutePath());

    WebElement upload =
        driver.findElement(By.xpath("/html/body/div[3]/div/div[2]/div/div/div/form/input[2]"));
    upload.click();

    new WebDriverWait(driver, CStudioSeleniumUtil.SHORT_TIMEOUT)
        .until(
            new ExpectedCondition<Boolean>() {
              public Boolean apply(WebDriver d) {
                WebElement e = d.findElement(By.id("xf-4$xf-20$imageSrcAltTextTest$xf-206$$a"));
                return e != null && e.getAttribute("class").contains("xforms-alert-inactive");
              }
            });
    WebElement mark = driver.findElement(By.id("xf-4$xf-20$imageSrcAltTextTest$xf-206$$a"));
    assertTrue(mark.getAttribute("class").contains("xforms-alert-inactive"));

    // Delete uploaded image
    CStudioSeleniumUtil.click_on(driver, By.id("xf-4$xf-20$imageSrcAltTextTest-deleteButton"));
    WebElement filename =
        driver.findElement(By.id("xf-4$xf-20$imageSrcAltTextTest$xf-206-filename"));
    assertTrue(filename.getText().equals("250W X 130H"));

    // Upload any image
    CStudioSeleniumUtil.click_on(driver, By.id("xf-4$xf-20$imageSrcTest-imageButton"));

    // Check popup dialog appears
    popup = driver.findElement(By.id("cstudio-wcm-popup-div_c"));
    assertTrue(popup.isDisplayed());

    input = driver.findElement(By.xpath("/html/body/div[3]/div/div[2]/div/div/div/form/input"));
    input.sendKeys(f2.getAbsolutePath());

    upload = driver.findElement(By.xpath("/html/body/div[3]/div/div[2]/div/div/div/form/input[2]"));
    upload.click();

    new WebDriverWait(driver, CStudioSeleniumUtil.SHORT_TIMEOUT)
        .until(
            new ExpectedCondition<Boolean>() {
              public Boolean apply(WebDriver d) {
                WebElement e = d.findElement(By.id("xf-4$xf-20$imageSrcTest$xf-237-filename"));
                return e != null && e.getText().equals("/static-assets/images/image_picker_2.png");
              }
            });

    // Delete uploaded image
    CStudioSeleniumUtil.click_on(driver, By.id("xf-4$xf-20$imageSrcTest-deleteButton"));
    filename = driver.findElement(By.id("xf-4$xf-20$imageSrcTest$xf-237-filename"));
    assertTrue(filename.getText().equals(""));

    // Close driver
    CStudioSeleniumUtil.exit(driver);
  }