Selenium IDE - sideflow.js loops

2019-07-15 00:18发布

问题:

I wanted to create testcase with loops. I got latest sideflow.js extension and targeted to it in Selenium options. Then I restarted Selenium IDE but it doesn't work.

Sample testcase:

store|i|1
while|${i}<200|
echo|${i}|
storeEval|i=1*storedVars['i']; i+1|i
endWhile||

It displayed the following error message:

[error] Unexpected Exception: fileName -> chrome://selenium-ide/content/tools.js -> file:///home/imslavko/bin/sideflow.js?1346044911197, lineNumber -> 100

Firefox version: 14.0.1 for Ubuntu

Selenium IDE version: 1.9.0

sideflow.js: latest from this page https://github.com/darrenderidder/sideflow/blob/master/sideflow.js

How to make it work? Thanks in advance.

回答1:

If you want to create a loop, the following is suggested. I am still learning so I am not sure but this has worked for me.

For i=0; i <= 200; i++  i

break   "${i}" == 200   

Echo    *** "${i}" ***  

endFor


回答2:

Instead of

store|i|1

write it as

store|1|i


回答3:

Here is an example triple array looper (With static variables so you can see it changing)

This is a custom one I have made, notice the syntax for storing incremental variables (Such as counters e.t.c.)

This looper will cycle through all of your options (In the example below there are 6*5*4=120 options). It echo's each option out once and then moves onto the next one.

example_array_looper
storeEval   new Date().getTime();   timeStart
echo    ${timeStart}    
storeEval   new Array("1","2","3","4"); toparray
storeEval   new Array("A", "B", "C", "D", "E"); middlearray
storeEval   new Array("i","ii","iii","iv","v","vi");    bottomarray
getEval topindex=0; 
getEval middleindex=0;  
getEval bottomindex=0;  
getEval loopCounter=0;  
while   topindex < storedVars['toparray'].length    
storeEval   topindex    temptop
while   middleindex < storedVars['middlearray'].length  
storeEval   middleindex tempmiddle
while   bottomindex < storedVars['bottomarray'].length  
storeEval   bottomindex tempbottom
echo    javascript{storedVars['toparray'][storedVars['temptop']]+" -> "+storedVars['middlearray'][storedVars['tempmiddle']]+" -> "+storedVars['bottomarray'][storedVars['tempbottom']]} 
getEval bottomindex++;  
getEval loopCounter++;  
endWhile        
getEval bottomindex=0;  
getEval middleindex++;  
endWhile        
getEval bottomindex=0;  
getEval middleindex=0;  
getEval topindex++; 
endWhile        
storeEval   loopCounter loops
echo    Total number of loops is: ${loops}  
storeEval   new Date().getTime();   timeEnd
echo    ${timeEnd}  
storeEval   (${timeEnd}-${timeStart})/1000  scriptRunTime
echo    Total Run Time for Script was: ${scriptRunTime}s    
storeEval   ${scriptRunTime}/${loops}   averageTime
echo    Average Loop Duration was: ${averageTime}s  

I opted to remove all the html tagging (So the gaps should be quite evident). StoreEval command is best for holding your loop counters because you can then use them as incrementals in one step instead of 2.