Enhancing a Recorded Session with XML

You can prepare an XML script by recording a session and then manually adding the relevant XML and Vuser API functions.

The following example illustrates how a recorded session was enhanced with Vuser API functions. Note that the only function that was recorded was web_submit_data, which appears in bold.

The first section contains the XML input declaration of the variable SOAPTemplate, for a SOAP message:

#include "as_web.h"
// SOAP message
const char* pSoapTemplate=
  "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
      "<soap:Body>"
          "<SendMail xmlns=\"urn:EmailIPortTypeInft-IEmailService\"/>"
      "</soap:Body>"
  "</soap:Envelope>";

The following section represents the actions of the user:

Example:

Action1()
{
// get response body
 web_reg_save_param("ParamXml", "LB=", "RB=", "Search=body", LAST);
// fetch weather by HTTP GET
web_submit_data("GetWeather","Action=http://glkev.net.innerhost.com/glkev_ws/
     WeatherFetcher.asmx/GetWeather",      "Method=GET",      "EncType=",      "RecContentType=text/xml",      "Referer=http://glkev.net.innerhost.com/glkev_ws/WeatherFetcher.asmx?op=GetWeather",        "Snapshot=t2.inf",        "Mode=HTTP",        ITEMDATA,        "Name=zipCode", "Value=10010", ENDITEM,         LAST);
// Get City value
  lr_xml_get_values("Xml={ParamXml}", 
                 "Query=City",
                 "ValueParam=ParamCity",
                 LAST
    		    );
 lr_output_message(lr_eval_string("***** City = {ParamCity} *****"));
 
//Get State value
 lr_xml_get_values("Xml={ParamXml}", 
                 "Query=State",
                 "ValueParam=ParamState",
                 LAST
    		    );
 lr_output_message(lr_eval_string("***** State ={ParamState}*****"));

 

// Get several values at once by using template 
lr_xml_get_values_ex("Xml={ParamXml}",
         
"Template="
            "<Weather>"
               "<Time>{ParamTime}</Time>"
               "<Temperature>{ParamTemp}</Temperature>"
               "<Humidity>{ParamHumid}</Humidity>"
               "<Conditions>{ParamCond}</Conditions>"
            "</Weather>",
         	LAST
    		);
 
   lr_output_message(lr_eval_string("***** Time = {ParamTime}, 
                 Temperature =  {ParamTemp}, "
                    "Humidity = {ParamHumid}, 
                 Conditions = {ParamCond} *****"));
     
 //Generate readable forecast
    lr_save_string(lr_eval_string("\r\n\r\n*** Weather Forecast for {ParamCity},
             {ParamState} ***\r\n"
          "\tTime: {ParamTime}\r\n"
          "\tTemperature: {ParamTemp} deg. Fahrenheit\r\n"
          "\tHumidity: {ParamHumid}\r\n"
          "\t{ParamCond} conditions expected\r\n"
          "\r\n"),
          "ParamForecast"
    );
    // Save soap template into parameter
    lr_save_string(pSoapTemplate, "ParamSoap");

// Insert request body into SOAP template
    lr_xml_insert("Xml={ParamSoap}",
         "ResultParam=ParamRequest",
         "Query=Body/SendMail",
         "position=child",
         "XmlFragment="
             "<FromAddress>john1@hpe.com</FromAddress>"
             "<ToAddress>softwaresupport@hpe.com</ToAddress>"
             "<ASubject>Weather Forecast</ASubject>"
             "<MsgBody/>",
LAST); "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"  "<soap:Body>""<SendMail xmlns=\"urn:EmailIPortTypeInft-IEmailService\"/>""<FromAddress>john1@hpe.com</FromAddress>"          "<ToAddress>softwaresupport@hpe.com</ToAddress>"          "<ASubject>Weather Forecast</ASubject>"          "<MsgBody/>"       "</SendMail>"    "</soap:Body>""</soap:Envelope>";
// Insert actual forecast text
    lr_xml_set_values("Xml={ParamRequest}", 
                      "ResultParam=ParamRequest",
                      "Query=Body/SendMail/MsgBody", 
                      "ValueParam=ParamForecast", 
                       LAST);

// Add header for SOAP
 web_add_header("SOAPAction", "urn:EmailIPortTypeInft-IEmailService");
// Get response body
 web_reg_save_param("ParamXml", "LB=", "RB=", "Search=body", LAST);
// Send forecast to recipient, using SOAP request
 web_custom_request("web_custom_request",
   "URL=http://webservices.matlus.com/scripts/emailwebservice.dll/soap
        /IEmailservice",
        "Method=POST",
        "TargetFrame=",
        "Resource=0",
        "Referer=",
        "Body={ParamRequest}",
        LAST);
// Verify that mail was sent
    lr_xml_find("Xml={ParamXml}",
                "Query=Body/SendMailResponse/return",
                "Value=0",
                 LAST);
    return 0;
}

Back to top