2016-09-02 16 views
2

UI行からテーブル値を読み込みます。各行をクリックして各値を読み取ってテーブルを読みます。エラー:オブジェクトがコールバック関数に配列を返す関数ではありません

exports.getTableData = function(callback){ 
    var uiArray =[]; 
    var count; 
    
    aLib.loadCheck(client);     
    //Clicks the first record of the table 
    aLib.controlClick(client, obj.table.firstRecord); 
    aLib.loadCheck(client);     
    // Gets the text of the total number of records on the top left of the table and uses it to drive the loop 
    client.getText(obj.topContent.recordCount, function (err, rowNum){ 
       console.log(rowNum); 
       count = rowNum.match(/\d/g).join(""); 
     console.log('No. of records on UI:', count); 
          // Recursive function which clicks, reads the text in the selected row, and then clicks the next immediate row. 
          // This way, the dynamic nature of the records appearing in the DOM, as one scrolls down is handled. 
      function forLoop(i){ 
      client.getText(obj.table.selectedRow, function (err, text){ 

                var str = text.toString();//coverted UI text to string 
       str = str.replace(/\n/g,",");//converted next line(\n/g) to comma 
       str = str.replace(/\s/g, '');//removed blank space(\s/g) 
       var text = str.split(',');//converted string to array again 
       removed = text.splice(1,1);// removed updated by from UI 
       removed = text.splice(6,1);// removed inserted on from UI 
       removed = text.splice(7,2);// removed created by id from UI 
       // console.log(text.length); 
       uiArray.push.apply(uiArray, text); 
       // console.log('UI array ki length',uiArray.length); 
       console.log('i ki value :',i) 
       if(i==count){ 
           
        console.log('inside if..............');  
        console.log(uiArray);  
        return callback(uiArray); 
       } 
       client.click(obj.table.nextRow); 
       forLoop(i+1); 
       }); 


      } 
     forLoop(1); 
    });  

}; 

となり、このスクリプトはこの関数getTableDataを呼び出します。 試し{

   aLib.getTableData(client, function (uiTable){ 
       console.log('suman00'); 
       console.log(uiTable);  
       }); 

      client.pause(12000); 
     } catch (e) { 
      expect(false).toBe(true); 
      throw new Error('testcase case failed because of exception : ' + e); 
     } 
     client.call(done); 
    },250000); 

私はあなたが二つのパラメータ、コールバックされた第2とgetTableData()を呼び出しているreturn callback(uiArray);

console.log(uiArray);  //this returns value successfully.however i am unable to return the array to my script. 
+0

あなたの関数は1つの引数しか取らず、2番目の引数としてコールバックを渡しているようです。 –

+0

ゆうふう.... !!ありがとう...ありがとうございました。 –

答えて

2

でここでの問題を取得しています:あなたは、しかし

aLib.getTableData(client, function (uiTable){ 

1つのパラメータで関数を定義します。

exports.getTableData = function(callback){ 

結果として、オブジェクトclientを機能として呼び出そうとしていますが、これは機能しません。


あなたの定義されたパラメータは、コールバックで、問題はむしろ、uiArrayではないようです。:

exports.getTableData = function(client, callback){ 
0

、例えばに合格したものと一致する必要があります。

エラーは、コードのどこかで、関数ではなくオブジェクトでexports.getTableDataを呼び出していることを示します。

return callback(uiArray);すると、エラーが発生します。

関連する問題