2017-01-27 10 views
0

私は、NightwatchJSを使用して、私たちの報告ウェブサイトでテストを自動化しています。Nightwatchのパラメータに基づいて動的テストを生成する

.selectScheda(scheda-1) .selectPromptValue('Year', year) .selectRappresentazione('Table')

selectPromptValueは、プロンプトの名前を望んでいるし、それを設定する値:私はいくつかのヘルパーを作っ

module.exports = { 
    '@tags': ['Report 1','base','full'], 
    'Report 1' : function (browser) { 
    checkAnalisi(browser, 'report1', 1, 2015, '767.507') 
    } 
}; 

function checkAnalisi(browser, nomeAnalisi, scheda, year, risultatoAtteso){ 
    return browser 
     .url('https://example.com/Wizard?analisi=' + nomeAnalisi) 
     .waitForElementVisible('body', 5000) 
     .selectScheda(scheda-1) //Seleziona la scheda (0-based) 
     .selectPromptValue('Year', year) 
     .selectRappresentazione('Table') 
     .waitForElementVisible('table', 5000, true) 
     .assert.containsText('table tr:last-child td:last-child', risultatoAtteso) 
     .end(); 
} 

はページ内の異なるものを選択するコマンド:

これは私の実際のコードですページの

今のところ、この関数は年パラメータのみを設定しますが、私のレポートではパラメータも異なります。

私がしたいことは、オブジェクトをcheckAnalisi関数に渡して動的にテストを生成することです。例えば、私が[['Year', 2015],['Another prompt','another value']]checkAnalisi関数のようなものを渡したい異なるプロンプト値を設定する場合は、それぞれの値に2 .selectPromptValueのステップを追加する必要があります。

私の関数で入力配列を循環させて、より多くのステップを追加することはできますか?

答えて

0

実際に私はselectPromptValueカスタムコマンドでこれを簡単に解決することができました。

私は単に(promptValuesが新しいパラメータである)このようcheckAnalisi関数に新しいパラメータを追加しました:

function checkAnalisi(browser, nomeAnalisi, scheda, promptValues, risultatoAtteso){ 
    return browser 
     .url('https://example.com/Wizard?analisi=' + nomeAnalisi) 
     .waitForElementVisible('body', 5000) 
     .selectScheda(scheda-1) //Seleziona la scheda (0-based) 
     .selectPromptValue(promptValues) 
     .selectRappresentazione('Table') 
     .waitForElementVisible('table', 5000, true) 
     .assert.containsText('table tr:last-child td:last-child', risultatoAtteso) 
     .end(); 
} 

私は、このようなselectPromptValue.jsカスタムコマンド修正:

exports.command = function(v) { 
    for(var i=0; i<v.length; i++){ 
     this.execute('$("#"+$("label:visible:contains(\'' + v[i][0] + '\')").attr("for")).val("' + v[i][1] + '")'); 
    } 
    return this; 
}; 
関連する問題