18 January 2026:


This forum is now archived and is in read-only mode. Please continue discussions on our improved new Sahi Pro Community forum.



Sahi Pro is an enterprise grade test automation platform which can automate web, mobile, API, windows and java based applications and SAP.

regualr expression for extracting all elements

keatskeats Members
edited November -1 in Sahi - Open Source
My html page contains following elements, And there are 40 such elements in the page

<input class="txtTblReslt size33" type="text" maxlength="50" value="P" name="UserDefinedLabelsList.P"/>
<input class="txtTblReslt size33" type="text" maxlength="50" value="C Num" name="UserDefinedLabelsList.C Num"/>

Its actually a text box with pre-defined data in it.
When i want to extract all of those i use regular extraction,


_debug(_textbox(new RegExp(/UserDefinedLabelsList\..*/g)).value);

I was assuming 'g' is for global.
I failed to extract all the label/text and it return me only the first value i.e 'P'

Can someone suggest a solution for this?

Thanks.

Comments

  • keatskeats Members
    Hi Narayan,

    Can you please let me know a solution for this?

    Thanks,
    Kirthi
  • narayannarayan Administrators
    Hi Kirthi,

    APIs in Sahi return you a single element. They do not return a collection. The regular expression based match will also return the first matched element.

    Looking at your snippet, it looks like all these have the same class. You could use
    _textbox("txtTblReslt size33[0]") to _textbox("txtTblReslt size33[39]") to access each of these elements.

    Eg.
    var $values = [];
    for (var $i=0; $i<40; $i++){
       _set($values[$i], _textbox("txtTblReslt size33["+$i+"]").value);
    }
    
    and then use the $values array.
    

    You can also use a browser function to collect all necessary values and then use it.
    <browser>
    function collectValues(){
       var values = new Array();
       var els = document.getElementsByTagName("INPUT");
       for (var i=0; i<els.length; i++){
         if (els.type == "text" && els.name && els.name.indexOf("UserDefinedLabelsList") == 0){
            values[values.length] = els.value;
         }
       }
    }
    </browser>
    
    var $values;
    _set($values, collectValues());
    
    

    The second method is faster than the first.

    Hope that helps.
    -Narayan
Sign In or Register to comment.