Package com.canoo.webtest.steps.store

Source Code of com.canoo.webtest.steps.store.StoreXPath

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

import javax.xml.xpath.XPathException;

import org.apache.log4j.Logger;

import com.canoo.webtest.engine.StepFailedException;
import com.canoo.webtest.engine.xpath.XPathHelper;
import com.gargoylesoftware.htmlunit.Page;

/**
* Attributes:
* description   The description of this test step         optional
* select        The XPath expression to evaluate          mandatory
* property      The name of the property                  mandatory
* propertyType  The type of the property                  optional
*
* @author Walter Rumsby
* @author Marc Guillemot
* @author Paul King
* @since 1.5
* @webtest.step
*   category="Core"
*   name="storeXPath"
*   alias="storexpath"
*   description="This step stores the result of an <key>XPATH</key> expression into a property."
*/
public class StoreXPath extends BaseStoreStep {
  private static final Logger LOG = Logger.getLogger(StoreXPath.class);
  private String fXpath;
  private String fDefault;

  public String getXpath() {
    return fXpath;
  }

  /**
   * @webtest.parameter
   *   required="yes"
   *  description="The <key>XPATH</key> that shall be evaluated."
   */
  public void setXpath(final String xpath) {
    fXpath = xpath;
  }

  /**
   * @webtest.parameter
   *   required="no"
   *  description="The value to store in the property when the xpath evaluation returns no result
   *  (if not set, the step will fail if the xpath evaluation returns no result)."
   */
  public void setDefault(final String defaultValue) {
    fDefault = defaultValue;
  }

  public String getDefault() {
    return fDefault;
  }

  public void doExecute() throws XPathException {
    storeProperty(evaluateXPath());
  }

  protected String evaluateXPath() throws XPathException {
    final Page currentResponse = getContext().getCurrentResponse();
    final XPathHelper xpathHelper = getContext().getXPathHelper();
    final String result = xpathHelper.stringValueOf(currentResponse, getXpath());

    // seems that result is "" and not null when nothing is found
    if (result == null
      || (result.length() == 0 && xpathHelper.selectFirst(currentResponse, getXpath()) == null)) {

      if (getDefault() == null)
      {
        throw new StepFailedException("No match for xpath expression <" + fXpath + ">", this);
      }
      else
      {
        LOG.debug("No result, using default value");
        return getDefault();
      }
    }

    LOG.debug("Xpath result: " + result);
    return result;
  }

  protected void verifyParameters() {
    super.verifyParameters();
    emptyParamCheck(getProperty(), "property");
    nullParamCheck(getXpath(), "xpath");
  }

}
TOP

Related Classes of com.canoo.webtest.steps.store.StoreXPath

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.