2017-01-27 8 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 사용자 지정 명령에서이 문제를 직접 쉽게 해결할 수있었습니다.

은 단순히이 같은 checkAnalisi 기능 (promptValues ​​새로운 매개 변수)에 대한 새로운 파라미터가 추가

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; 
};