Created
February 24, 2015 05:43
-
-
Save umanda/8f6497c6a4a962f20c85 to your computer and use it in GitHub Desktop.
Custom function for selenium IDE. For install Option > Options > Add js path in Selenium core extension location To get selenium IDE Selenium IDE is only work for Firefox
http://docs.seleniumhq.org/download/
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var gotoLabels= {}; | |
var whileLabels = {}; | |
Selenium.prototype.reset = function() { | |
this.initialiseLabels(); | |
this.defaultTimeout = Selenium.DEFAULT_TIMEOUT; | |
this.browserbot.selectWindow("null"); | |
this.browserbot.resetPopups(); | |
} | |
Selenium.prototype.initialiseLabels = function() | |
{ | |
gotoLabels = {}; | |
whileLabels = { ends: {}, whiles: {} }; | |
var command_rows = []; | |
var numCommands = testCase.commands.length; | |
for (var i = 0; i < numCommands; ++i) { | |
var x = testCase.commands[i]; | |
command_rows.push(x); | |
} | |
var cycles = []; | |
var forEachCmds = []; | |
for( var i = 0; i < command_rows.length; i++ ) { | |
if (command_rows[i].type == 'command') | |
switch( command_rows[i].command.toLowerCase() ) { | |
case "label": | |
gotoLabels[ command_rows[i].target ] = i; | |
break; | |
case "while": | |
case "endwhile": | |
cycles.push( [command_rows[i].command.toLowerCase(), i] ) | |
break; | |
case "foreach": | |
case "endforeach": | |
forEachCmds.push( [command_rows[i].command.toLowerCase(), i] ) | |
break; | |
} | |
} | |
var i = 0; | |
while( cycles.length ) { | |
if( i >= cycles.length ) { | |
throw new Error( "non-matching while/endWhile found" ); | |
} | |
switch( cycles[i][0] ) { | |
case "while": | |
if( ( i+1 < cycles.length ) && ( "endwhile" == cycles[i+1][0] ) ) { | |
whileLabels.ends[ cycles[i+1][1] ] = cycles[i][1]; | |
whileLabels.whiles[ cycles[i][1] ] = cycles[i+1][1]; | |
cycles.splice( i, 2 ); | |
i = 0; | |
} else ++i; | |
break; | |
case "endwhile": | |
++i; | |
break; | |
} | |
} | |
} | |
Selenium.prototype.continueFromRow = function( row_num ) | |
{ | |
if(row_num == undefined || row_num == null || row_num < 0) { | |
throw new Error( "Invalid row_num specified." ); | |
} | |
testCase.debugContext.debugIndex = row_num; | |
} | |
Selenium.prototype.doLabel = function(){}; | |
Selenium.prototype.doGotoLabel = function( label ) | |
{ | |
if( undefined == gotoLabels[label] ) { | |
throw new Error( "Specified label '" + label + "' is not found." ); | |
} | |
this.continueFromRow( gotoLabels[ label ] ); | |
}; | |
Selenium.prototype.doGoto = Selenium.prototype.doGotoLabel; | |
Selenium.prototype.doGotoIf = function( condition, label ) | |
{ | |
if( eval(condition) ) this.doGotoLabel( label ); | |
} | |
Selenium.prototype.doWhile = function( condition ) | |
{ | |
if( !eval(condition) ) { | |
var last_row = testCase.debugContext.debugIndex; | |
var end_while_row = whileLabels.whiles[ last_row ]; | |
if( undefined == end_while_row ) throw new Error( "Corresponding 'endWhile' is not found." ); | |
this.continueFromRow( end_while_row ); | |
} | |
} | |
Selenium.prototype.doEndWhile = function() | |
{ | |
var last_row = testCase.debugContext.debugIndex; | |
var while_row = whileLabels.ends[ last_row ] - 1; | |
if( undefined == while_row ) throw new Error( "Corresponding 'While' is not found." ); | |
this.continueFromRow( while_row ); | |
} | |
Selenium.prototype.doPush= function(value, varName) | |
{ | |
if(!storedVars[varName]) { | |
storedVars[varName] = new Array(); | |
} | |
if(typeof storedVars[varName] !== 'object') { | |
throw new Error("Cannot push value onto non-array " + varName); | |
} else { | |
storedVars[varName].push(value); | |
} | |
} | |
Selenium.prototype.doLoadXml= function(path) | |
{ | |
if(path == ""){ | |
throw new Error("Can not proccess XML becasue path is not given "); | |
}else{ | |
var xmlDoc=loadXMLDoc(path); | |
} | |
var x=xmlDoc.getElementsByTagName("url"); | |
for (i=0;i<x.length;i++) | |
{ | |
document.write(x[i].childNodes[0].nodeValue); | |
document.write("<br>"); | |
} | |
} | |
Selenium.prototype.doRandomString = function( options, varName ) { | |
var length = 8; | |
var type = 'alphanumeric'; | |
var o = options.split( '|' ); | |
for ( var i = 0 ; i < 2 ; i ++ ) { | |
if ( o[i] && o[i].match( /^\d+$/ ) ) | |
length = o[i]; | |
if ( o[i] && o[i].match( /^(?:alpha)?(?:numeric)?$/ ) ) | |
type = o[i]; | |
} | |
switch( type ) { | |
case 'alpha' : storedVars[ varName ] = randomAlpha( length ); break; | |
case 'numeric' : storedVars[ varName ] = randomNumeric( length ); break; | |
case 'alphanumeric' : storedVars[ varName ] = randomAlphaNumeric( length ); break; | |
default : storedVars[ varName ] = randomAlphaNumeric( length ); | |
}; | |
}; | |
function randomNumeric ( length ) { | |
return generateRandomString( length, '0123456789'.split( '' ) ); | |
} | |
function randomAlpha ( length ) { | |
var alpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split( '' ); | |
return generateRandomString( length, alpha ); | |
} | |
function randomAlphaNumeric ( length ) { | |
var alphanumeric = '01234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split( '' ); | |
return generateRandomString( length, alphanumeric ); | |
} | |
function generateRandomString( length, chars ) { | |
var string = ''; | |
for ( var i = 0 ; i < length ; i++ ) | |
string += chars[ Math.floor( Math.random() * chars.length ) ]; | |
return string; | |
} | |
/** | |
**/ | |
Selenium.prototype.doGetOnlyNumbers = function( locator, varName ) { | |
// If text looks like 8 Pages | |
var text = this.getText(locator); | |
var count = parseInt(text,10); | |
storedVars[ varName ] = count; | |
}; | |
Selenium.prototype.doGetLPageNumbers = function( locator, varName ) { | |
// If Test looks like 79 Results, 8 Pages | |
var text = this.getText(locator); | |
var tr = text.replace(/ /g,'').split(','); | |
storedVars[ varName ] = (parseInt(tr[1],10)); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment