Package com.canoo.webtest.steps.form

Source Code of com.canoo.webtest.steps.form.SetCheckbox

// Copyright � 2002-2007 Canoo Engineering AG, Switzerland.
package com.canoo.webtest.steps.form;

import com.canoo.webtest.engine.StepFailedException;
import com.canoo.webtest.util.ConversionUtil;
import com.canoo.webtest.util.FormUtil;
import com.canoo.webtest.util.HtmlConstants;
import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import org.apache.log4j.Logger;

import java.io.IOException;

/**
* Provides the ability to check / uncheck HTML checkboxes.
*
* @author Marc Guillemot
* @webtest.step category="Core"
* name="setCheckbox"
* alias="new_setcheckbox,setcheckbox"
* description="Provides the ability to check and uncheck checkboxes in <key>HTML</key> forms."
*/
public class SetCheckbox extends AbstractSetNamedFieldStep {
  private static final Logger LOG = Logger.getLogger(SetCheckbox.class);
  private String fChecked;

  protected HtmlForm findForm() {
    return FormUtil.findFormForField(getContext(), getFormName(), HtmlConstants.INPUT, HtmlConstants.CHECKBOX, getName(), this);
  }

  protected boolean keepField(final HtmlElement elt) {
    if (!(elt instanceof HtmlCheckBoxInput)) {
      return false;
    }
    return isValueNull() || getValue().equals(((HtmlCheckBoxInput) elt).getValueAttribute());
  }

  /**
   * Set the value.
   *
   * @param value
   * @webtest.parameter required="no"
   * description="The value to use to select the desired checkbox. If not present, the first possible checkbox is selected."
   */
  public void setValue(final String value) {
    super.setValue(value);
  }

  /**
   * Updates a field.
   *
   * @param field The field to update
   */
  protected void setField(final HtmlElement field) throws IOException {
    if (!(field instanceof HtmlCheckBoxInput)) {
      throw new StepFailedException("Found " + field.getTagName() + " when looking for checkbox", this);
    }
    final boolean checked = isChecked();
    final HtmlCheckBoxInput checkBox = (HtmlCheckBoxInput) field;
    if (checkBox.isChecked() != checked) {
      checkBox.click();
      LOG.debug((checked ? "" : "un") + "checked checkbox " + checkBox);
    }
  }

  /**
   * Gets the boolean value of the argument {@link #setChecked(String)}.
   * @return The boolean value.
   */
  private boolean isChecked() {
    return ConversionUtil.convertToBoolean(getChecked(), true);
  }

  /**
   * Gets the value of the argument {@link #setChecked(String)}.
   * @return The value as set by the user.
   */
  public String getChecked() {
    return fChecked;
  }

  /**
   * @webtest.parameter required="false"
   * default="true"
   * description="Specifies if the checkbox shall be checked (true) or unchecked (false)."
   */
  public void setChecked(final String checked) {
    fChecked = checked;
  }

}
TOP

Related Classes of com.canoo.webtest.steps.form.SetCheckbox

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.