org.eclipse.skalli.selenium.pageobjects.ext.editform.RatingsAndReviewExtensionEditForm.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.skalli.selenium.pageobjects.ext.editform.RatingsAndReviewExtensionEditForm.java

Source

/*******************************************************************************
 * Copyright (c) 2010-2014 SAP AG and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     SAP AG - initial API and implementation
 *******************************************************************************/
package org.eclipse.skalli.selenium.pageobjects.ext.editform;

import java.util.concurrent.TimeUnit;

import org.eclipse.skalli.selenium.pageobjects.ext.AbstractExtensionEditForm;
import org.eclipse.skalli.selenium.pageobjects.ext.util.PositionProvider;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

/**
 * This is the extension edit form for the ratings and reviews extension
 */
public class RatingsAndReviewExtensionEditForm extends AbstractExtensionEditForm {
    public RatingsAndReviewExtensionEditForm(WebDriver driver) {
        super(driver, PositionProvider.getPositionNumberOfExtensionsEditForm(driver,
                PositionProvider.getRatingsAndReviewExtensionEditFormName()));
    }

    @Override
    protected boolean isExtensionContentDisplayed() {
        return getRatingStyleField().isDisplayed() && getRatingStyleSelectionButton().isDisplayed()
                && getAllowAnonymusReviewsCheckBox().isDisplayed();
    }

    //TODO find a safe way to send keys to a field with a selection button
    public void sendKeysToRatingStyleField(String text, boolean click) {
        getRatingStyleField().sendKeys(text + "\n");

        driver.manage().timeouts().implicitlyWait(500, TimeUnit.MILLISECONDS);

        if (click) {
            getRatingStyleField().click();
        }
    }

    public String getRatingStyleFieldContent() {
        return getRatingStyleField().getAttribute("value");
    }

    public void clickRatingStyleSelectionButton() {
        getRatingStyleSelectionButton().click();
    }

    public void checkAllowAnonymusReviewsCheckBox(boolean checked) {
        WebElement allowAnonymusReviewsCheckBox = getAllowAnonymusReviewsCheckBox();

        if (checked && !allowAnonymusReviewsCheckBox.isSelected()) {
            allowAnonymusReviewsCheckBox.click();
        }

        if (!checked && allowAnonymusReviewsCheckBox.isSelected()) {
            allowAnonymusReviewsCheckBox.click();
        }
    }

    public boolean isAllowAnonymusReviewsCheckBoxChecked() {
        return getAllowAnonymusReviewsCheckBox().isSelected();
    }

    protected WebElement getRatingStyleField() {
        return driver.findElement(By.xpath(getXPathToRatingStyleField()));
    }

    protected WebElement getRatingStyleSelectionButton() {
        return driver.findElement(By.xpath(getXPathToRatingStyleSelectionButton()));
    }

    protected WebElement getAllowAnonymusReviewsCheckBox() {
        return driver.findElement(By.xpath(getXPathToAllowAnonymusReviewsCheckBox()));
    }

    private String getXPathToRatingStyleField() {
        return getXPathToExtensionContainer() + "/div/div/div/div/div/div[3]/fieldset/div[2]/div/table/tbody/tr["
                + 1 + "]/td[3]" + "/div/input";
    }

    private String getXPathToRatingStyleSelectionButton() {
        return getXPathToExtensionContainer() + "/div/div/div/div/div/div[3]/fieldset/div[2]/div/table/tbody/tr["
                + 1 + "]/td[3]" + "/div/div";
    }

    private String getXPathToAllowAnonymusReviewsCheckBox() {
        return getXPathToExtensionContainer() + "/div/div/div/div/div/div[3]/fieldset/div[2]/div/table/tbody/tr["
                + 2 + "]/td[3]" + "/span/input";
    }
}