2017-02-17 4 views
0

Gridmapper에 대한 테스트를 작성하려고합니다. 이것은 일반 ASCII 키를 사용하여 응용 프로그램을 제어하는 ​​응용 프로그램입니다. 나는 'w'가 의도 한대로 수행되는지 여부를 결정하는 테스트를 작성하려고합니다. 슬프게도 ChromeDriver와 FirefoxDriver 모두에서 작동하는 테스트를 작성할 수 없습니다.Chromium 및 Firefox 드라이버 모두에서 작동하는 키 nightwatch.js 테스트를 작성하는 방법은 무엇입니까?

module.exports = { 
    'walls' : function (browser) { 
    browser 
     .url('file://' + process.cwd() + '/gridmapper.svg') 
     .assert.elementPresent('#walls0') 
     .keys('w') 
     .waitForElementPresent('#wall_0_0', 1000) 
     .end(); 
    } 
}; 

이 파이어 폭스에 대한 작동 동일한 테스트 등입니다 : 이것은 크롬 작동 테스트입니다

document.onkeydown = keyPressed; // capture arrow keys 
document.onkeypress = keyPressed; // capture character keys 

:

내가 내 응용 프로그램에서 키 이벤트를 수용하는 방법이다 :

module.exports = { 
    'walls' : function (browser) { 
    browser 
     .url('file://' + process.cwd() + '/gridmapper.svg') 
     .assert.elementPresent('#walls0') 
     .sendKeys('#ui', 'w') 
     .waitForElementPresent('#wall_0_0', 1000) 
     .end(); 
    } 
}; 

내가 뭘 잘못하고 있니? 모든 종류의 조합을 시도하고 문서 루트 요소 및 몇 가지 옵션에 이벤트를 보내려고했지만 아이디어가 부족합니다.

답변

2

당신은 browserName을 얻고 싶습니다. 그리고 그것은 capabilities 객체에 저장되어 있습니다. 문자열에 대한 추가 작업을 수행해야 할 수도 있고하지 않을 수도 있지만 toUpperCase 일해야합니다.

조건을 추가 할 수 있습니다. '브라우저'만 사용해야합니다. 후속 명령마다 표기법.

트릭을해야합니다.

module.exports = { 
    'walls' : function (browser) { 
    var runtimeBrowser = browser.capabilities.browserName.toUpperCase() 
    browser 
     .url('file://' + process.cwd() + '/gridmapper.svg') 
     .assert.elementPresent('#walls0') 
     if(runtimeBrowser = "CHROME"){ 
      browser.keys('w') 
     } elseif(runtimeBrowser = "FIREFOX") { 
      browser.sendKeys('#ui', 'w') 
     } else { 
      // do other default thing 
     } 
     browser.waitForElementPresent('#wall_0_0', 1000) 
     browser.end(); 
    } 
}; 
+0

'else'및 'elseif'토큰이 내 복사본에서 지원되지 않는 것 같습니다. –

+0

왜 그런 말을합니까? 네가 본 메시지는 무엇인가? – QualiT

+0

SyntaxError : 예기치 않은 토큰 –

1

나는 크롬에 대한 테스트 파일에서 Firefox 용 테스트 파일을 그래서 그것을 할 지금이 발생하고있어 방법을 찾지 못했습니다. 날 크롬 테스트 또는 Firefox 테스트를 실행할 수 있습니다

{ 
    "src_folders" : ["tests/chrome", "tests/firefox"], 
    "output_folder" : "reports", 
    "custom_commands_path" : "", 
    "custom_assertions_path" : "", 
    "page_objects_path" : "", 
    "globals_path" : "", 

    "selenium" : { 
    "start_process" : true, 
    "server_path" : "./bin/selenium-server-standalone-3.0.1.jar", 
    "log_path" : "", 
    "port" : 4444, 
    "cli_args" : { 
     "webdriver.chrome.driver" : "./bin/chromedriver", 
     "webdriver.gecko.driver" : "./bin/geckodriver" 
    } 
    }, 

    "test_settings" : { 
    "default" : { 
     "launch_url" : "http://localhost", 
     "selenium_port" : 4444, 
     "selenium_host" : "localhost" 
    }, 

    "chrome" : { 
     "desiredCapabilities": { 
     "browserName": "chrome" 
     }, 
     "filter" : "tests/chrome/*.js" 
    }, 

    "firefox" : { 
     "desiredCapabilities": { 
     "browserName": "firefox", 
     "marionette": true 
     }, 
     "filter" : "tests/firefox/*.js" 
    } 
    } 
} 

메이크 :

nightwatch.json는 두 개의 테스트 디렉토리를 사용합니다. 파이어 폭스 테스트는 크롬에서 생성은 검색을 사용하고 SED로 교체 테스트 :

chrome-test-files := $(wildcard tests/chrome/*.js) 

firefox-test-files := $(patsubst tests/chrome/%,tests/firefox/%,$(chrome-test-files)) 

all: 
    @echo "Did you want to run 'make tests'?" 

test: test-firefox test-chrome 

test-firefox: $(firefox-test-files) 
    node_modules/.bin/nightwatch --env firefox 

test-chrome: $(chrome-test-files) 
    node_modules/.bin/nightwatch --env chrome 

tests/firefox/%.js: tests/chrome/%.js 
    @mkdir -p tests/firefox 
    sed -e "s/\.keys(/.sendKeys('#ui',/" < $< > [email protected] 

를 그리고 이제 모든 작품과 나는 아직도 밤 교대에서 쉬운 대답이 없었다 실망입니다.