Saturday, April 9, 2011

Stored Vars in IDE (Array like functionality)

TC_StoreVars
store ABD:XYZ:123 v
echo ${v}
echo javascript{storedVars['v'].split(':').length}
echo javascript{storedVars['v'].split(':')[2]}

Screen capture on Google Maps

  1. Go to the below URL:http://maps.google.com/maps
  2. Type or Cut and Paste the below Address:
  3. 90 Hamilton Street, Cambridge, MA-02139
  4. Verify the Text Present “Lim Consultants Inc‎”
  5. Verify the Title “90 Hamilton Street, Cambridge, MA-02139 - Google Maps”
  6. Click on the “Lim Consultants Inc” link
  7. VerifyText Present “limconsultants.com” on the right side inline popup window.
  8. AssertText “Lim Consultants Inc” present within the inline popup window.
  9. Stop the Recoding in Selenium IDE
  10. Add screen capture at start and end of the Test, save the images as Test01.jpg and Test02.jpg resp.

CSV Format JS for IDE

var SEPARATORS = {
comma: ",",
tab: "\t"
};

function formatCommands(commands) {
var result = '';
var sep = SEPARATORS[options['separator']];
for (var i = 0; i < commands.length; i++) {
var command = commands[i];
if (command.type == 'command') {
result += command.command + sep + command.target + sep + command.value + "\n";
}
}
return result;
}

function parse(testCase, source) {
var doc = source;
var commands = [];
var sep = SEPARATORS[options['separator']];
while (doc.length > 0) {
var line = /(.*)(\r\n|[\r\n])?/.exec(doc);
var array = line[1].split(sep);
if (array.length >= 3) {
var command = new Command();
command.command = array[0];
command.target = array[1];
command.value = array[2];
commands.push(command);
}
doc = doc.substr(line[0].length);
}
testCase.setCommands(commands);
}

function format(testCase, name) {
return formatCommands(testCase.commands);
}

options = {separator: 'comma'};

configForm =
'Separator' +
'' +
'' +
'' +
'' +
'
' +
'
';

STIQ-Pipe Format JS for IDE

var SEPARATORS = {
comma: ",",
Pipe: "|",
tab: "\t",
Tilde: '~~'
};

function formatCommands(commands) {
var result = '';
var sep = SEPARATORS[options['separator']];
for (var i = 0; i < commands.length; i++) {
var command = commands[i];
if (command.type == 'command') {
switch (sep) {
case '|':
result += sep+command.command + sep + command.target + sep + command.value + sep+ "\r\n";
break;
case '~~':
result += sep+command.command + sep + command.target + sep + command.value + sep+ "\r\n";
break;
default:
result += command.command + sep + command.target + sep + command.value + "\r\n";
}
}
}
//alert(result);
return result;
}

function parse(testCase, source) {
var doc = source;
var commands = [];
var sep = SEPARATORS[options['separator']];
//alert("sep"+sep)
while (doc.length > 0) {
var line = /(.*)(\r\n|[\r\n])?/.exec(doc);
var array = line[1].split(sep);
if (array.length >= 3) {
var command = new Command();
switch (sep) {
case '|':
command.command = array[1];
command.target = array[2];
command.value = array[3];
break;
case '~~':
command.command = array[1];
command.target = array[2];
command.value = array[3];
break;

default:
command.command = array[0];
command.target = array[1];
command.value = array[2];
}
commands.push(command);
}
doc = doc.substr(line[0].length);
}
testCase.setCommands(commands);
}

function format(testCase, name) {
return formatCommands(testCase.commands);
}

options = {separator: 'comma',separator: 'Pipe',separator: 'Tilde'};

configForm =
'Separator' +
'' +
'' +
'' +
'' +
'' +
'' +
'
' +
'
';

Friday, April 8, 2011

JUnit 4 Vs TestNG

JUnit 4 Vs TestNG

JUnit 4 and TestNG are both very popular unit test framework in Java. Both frameworks look very similar in functionality. Which one is better? Which unit test framework should i use in Java project?

Feature comparison between JUnit 4 and TestNG:


Regular Expressions

Regular Expression Is used by adding the regexp prefix to your pattern: regexp:pattern

Selenium uses the JavaScript implementation of regular expressions (Perl-based):

· any character matches its literal representation: abc will match abc

· [ starts a class, which is any number of characters specified in the class

o [a-z] will match any number of lowercase alphabetical characters without spaces: hello, pizza, world

o [A-Z] does the same with uppercase characters

o [a-zA-Z] will do the same with either uppercase of lowercase characters

o [abc] will match either a, b or c

o [0-9] will match numeric characters

o ^ negates the character class is just after [: [^a-z] will match all but lowercase alphabetic characters

o \d, \w and \s are shortcuts to match respectively digits, word characters (letters, digits and underscores) and spaces

o \D, \W and \S are the negations of the previous shortcuts

· . matches any single characters excepts line breaks \r and \n

· ^ matches the start of the string the pattern is applied to: ^. matches a in abcdef

· $ is like ^ but for the end of the string: .$ matches f in abcdef

· | is equivalent to a logical OR: abc|def|xyz matches abc, def or xyz

· | has the lowest priority so abc(def|xyz) will match either abcdef or abcxyz

· ? makes the last character of the match optional: abc? matches ab or abc

· ? works in a greedy way: it will include the last character if possible

· repeats the preceding item at least zero or more times: ".*" matches "def" and "ghi" in abc "def" "ghi" jkl

· *? is the lazy star: matches only "def" in the previous example

· + matches the previous item at least once or more times.

· {n} will match the previous item exactly n times: a{3} will match aaa

o {n,m} will match the previous item between n and m times with m >= n and is greedy so it will try to match m items first: a{2,4} will match aaaa, aaa and aa

o {n,m}? is the same but in a lazy way: will start by matching at least n times and increase the number of matches to m

o {n,} will match the previous item at least n times

· Common regexps:

o \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} matches an ip adress but will also match 999.999.999.999.

o (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) will match a real ip adress. Can be shortened to: (?:\d{1,3}\.){3}\d{1,3}

o [A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4} matches an email adress

Selenium IDE - UI-Elements Reference

Selenium IDE + UI-Element Reference
Introduction

UI-Element is an extension for the Selenium IDE and Remote Control that makes it possible to define a mapping between semantically meaningful names of elements on webpages, and the elements themselves. The mapping is stored in a file using JavaScript Object Notation. The file may be shared by the IDE and driven tests running via the Selenium server. It also offers a single point of update should the user interface of the application under test change. UI-Element is available under the GNU General Public License. Click to read more...