2016-11-24 21 views
1

我已經使用量角器編寫了導出模塊。它內部定義了多個函數。 現在,我想調用同一模塊中另一個函數內的導出函數之一。 我的模塊如下所示。量角器:無法在同一個模塊中調用導出函數

module.exports = { 
    read_page_number_data: function { 
     // code here 
    }, 
    read_page_data: function { 
     this.read_page_number_data().then(function() { 
      // Code here. 
     }); 
    }, 
    check_link_present: function { 
     // code here 
    }, 
    click_link: function { 
     this.check_link_present().then(function() { 
      // Code here. 
     }); 
    }, 
} 

現在,當我在測試腳本中調用read_page_data函數時,出現以下錯誤。

失敗:this.read_page_number_data不是函數。

我已經嘗試了以下問題中給出的所有選項。仍然沒有成功。

protractor calling an exported function within the same module

注:調用read_page_data功能之前,我打電話click_link功能,其內部調用check_link_present功能。但是這個通話工作正常,並且check_link_present功能從得到呼叫正確click_link功能。在此之後,控件導航到鏈接中給出的頁面。

+0

你應該在此前加'this。'。導出模塊中的所有方法'read_page_number_data'。它應該像'this.read_page_number_data' –

+0

謝謝@SureshSalloju的答覆。但是,當我以「這個」爲前綴時。在所有的功能,我得到以下錯誤 [21:33:56]我/啓動器 - 運行1個WebDriver實例 [21:34:01] E/launcher - 錯誤:C:\ uiauto \ lib \ search_lib .js:4 this.enter_search_key_home_page:function(key){ ^ SyntaxError:意外的標記。 –

+0

你可以試試我的答案如下 –

回答

0

一個解決方案是將對象分配給特定於您的模塊的變量。 例如

module.exports = myModule = { 
    //... 
} 

然後你就可以用myModule.read_page_number_data()

模塊內調用您的函數,您可以找到一個例子JSFiddle here

註上this方面

有一點要記住的是,this可以根據父函數是如何調用改變它的背景下,這可能是爲什麼它正在爲click_link,但不是read_page_data

你可以在this關鍵字here找到更多的信息。

+0

感謝Matthias ..這個解決方案似乎對我有用。現在函數正在從其他函數調用。 –

+0

太棒了!如果它有幫助,請考慮接受它作爲答案。 –

0

爲什麼不嘗試像下面那樣。這是頁面對象模型測試框架的最佳實踐之一。

var PageName = function(){ 
       this.firstMethod = function(){ 
       //logic 
       }; 
       this.secodnMethod = function(){ 
       //logic 
       }; 
    } 

module.exports = new PageName(); 
+0

即使我這樣試過。仍然出現同樣的問題。我得到了同樣的舊錯誤。 –

+0

在哪個文件中訪問以及如何訪問? –

+0

謝謝蘇雷什。下面的解決方案爲我工作。其實我已經定義了一個頁面庫模塊。然後這些函數從測試腳本中調用。但是頁面模塊中的一個特定函數需要調用同一模塊內的其他函數......這就是失敗的地方。 –

相關問題