2017-12-05 1 views
1

저는 각도기 및 재스민을 사용하여 노드/각도 어플리케이션을 테스트하기 위해 프로젝트 작업을하고 있습니다. POC는 대부분의 브라우저에서 작동하지만 MS Edge에는 많은 문제가 있습니다. 내가 크롬, 파이어 폭스에서 테스트를 실행하고, IE가 (11) 동작은 (테스트 예상 결과와 실행) 괜찮 때Microsoft Edge에서 각도기/재스민 테스트를 수행 할 수 없습니다.

OS: Windows 10 Pro (Version 1709, OS Build 16299.98) 
Edge: 41.16299.15.0 
EdgeHTML: 16.16299 
MS Web Driver: 10.0.16299.15 
Node: 6.12.0 
Protractor: 5.2.1 
Jasmine: 2.8.0 
Selenium: 3.8.1 

: 여기 내 환경입니다. 그러나 MS Edge를 사용하면 테스트 사양이 실행되기 전에 프로세스가 실패합니다.

예제 코드/출력은 각도기 자습서를 사용하지만 응용 프로그램을 사용하여 작업 할 때도 동일한 문제가 있습니다. (크롬과 파이어 폭스)

근무 conf.js (MS 에지 용)

exports.config = { 
    framework: 'jasmine', 
    seleniumAddress: 'http://localhost:4444/wd/hub', 
    specs: ['./spec/spec.js'], 

    multiCapabilities: [ 
    { 'browserName': 'chrome' }, 
    { 'browserName': 'firefox', 'marionette': true, 'firefox_binary': "C:\\Program Files\\Mozilla Firefox\\firefox.exe" }//, 
] 
} 

실패 conf.js

exports.config = { 
    framework: 'jasmine', 
    seleniumAddress: 'http://localhost:17556', 
    specs: ['./spec/spec.js'], 

    capabilites: { browserName: 'MicrosoftEdge' } 
} 

spec.js

// spec.js 
describe('Protractor Demo App', function() { 
    it('should have a title', function() { 
    browser.get('http://juliemr.github.io/protractor-demo/'); 

    expect(browser.getTitle()).toEqual('Super Calculator'); 
    }); 
}); 

Micro Edge를 시작한 후 MS Edge 테스트를 실행할 때 소프트 웹 드라이버는 다음과 같은 상황이 발생합니다

$ protractor conf.js 
[14:14:18] I/launcher - Running 1 instances of WebDriver 
[14:14:18] I/hosted - Using the selenium server at http://localhost:17556 
[14:14:20] E/launcher - Error code: 135 
[14:14:20] E/launcher - Error message: ECONNREFUSED connect ECONNREFUSED 127.0.0.1:17556 
[14:14:20] E/launcher - Error: ECONNREFUSED connect ECONNREFUSED 127.0.0.1:17556 
    at ClientRequest.<anonymous> (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\http\index.js:238:15) 
    at emitOne (events.js:96:13) 
    at ClientRequest.emit (events.js:188:7) 
    at Socket.socketErrorListener (_http_client.js:310:9) 
    at emitOne (events.js:96:13) 
    at Socket.emit (events.js:188:7) 
    at emitErrorNT (net.js:1281:8) 
    at _combinedTickCallback (internal/process/next_tick.js:80:11) 
    at process._tickCallback (internal/process/next_tick.js:104:9) 
From: Task: WebDriver.createSession() 
    at Function.createSession (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:769:24) 
    at Function.createSession (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\chrome.js:761:15) 
    at createDriver (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\index.js:170:33) 
    at Builder.build (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\index.js:626:16) 
    at Hosted.getNewDriver (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\built\driverProviders\driverProvider.js:53:33) 
    at Runner.createBrowser (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\built\runner.js:195:43) 
    at q.then.then (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\built\runner.js:339:29) 
    at _fulfilled (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\q\q.js:834:54) 
    at self.promiseDispatch.done (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\q\q.js:863:30) 
    at Promise.promise.promiseDispatch (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\q\q.js:796:13) 
[14:14:20] E/launcher - Process exited with error code 135 

문제는 어딘가에 그것이 '로컬 호스트'에 서버를 사용하지만 대신에 '127.0.0.1'에 요청을하게됩니다 말한다 것 같다. 이론 상으로는 동일합니다. 그러나 작동 중에는 'localhost'만이 응답합니다. 127.0.0.1:17556에 액세스하려고하면 응답하지 않습니다.

This website could not be found 
Error Code: INET_E_RESOURCE_NOT_FOUND 

는 오랫동안 주위를 찾고 있었어요는 (여기서, SQA, 그리고, Protactor의 GitHub의에 대한 논의)이에 대한 정보를 원하시면하지만 해결책을 발견하지 않았습니다. GitHub에 대한 일부 토론은 Protractor를 사용한 MS Edge 테스트가 한 지점에서 진행되고 있음을 나타냅니다. MS Edge와 MS Webdriver 버전으로 분도기 테스트를 성공적으로 수행 할 수있는 사람이 있습니까?

마지막 정보 비트 하나 : 이전 버전의 Edge (10240)가있는 다른 Windows 10 컴퓨터에 액세스 할 수 있습니다. 해당 컴퓨터에서이 문제가 발생하지 않지만 (localhost vs 127.0.0.1), 아직 비동기 문제가 발생하기에는 너무 오래되었고 Protractor로 테스트 할 때 사용할 수 없습니다.

감사합니다.

UPDATE

사양 파일이 변경되지 않았습니다하지만 설정 파일 (conf.js) 업데이트 한 : 활성화되면

// conf.js 
exports.config = { 
    directConnect: false, 
    framework: 'jasmine', 
    specs: ['./spec/spec.js'], 
    seleniumAddress: 'http://localhost:4444/wd/hub', 

    multiCapabilities: [ 
     //{ 'browserName': 'chrome' }, 
     //{ 'browserName': 'firefox', 'marionette': true, 'firefox_binary': "C:\\Program Files\\Mozilla Firefox\\firefox.exe" }, 
     { 'browserName': 'MicrosoftEdge' } 
    ] 
}; 

가 크롬과 파이어 폭스 테스트를 실행 할 수 있습니다. 같은 설정을 윈도우 10의 이전 버전에, 에지 (10240), 그리고 에지 드라이버 - 이전으로

$ protractor conf.js 
[13:13:53] I/launcher - Running 1 instances of WebDriver 
[13:13:53] I/hosted - Using the selenium server at http://localhost:4444/wd/hub 
[13:14:13] E/launcher - Timed out waiting for driver server to start. 
Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T19:05:32.194Z' 
System info: host: 'QA-01', ip: '10.1.1.80', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '9.0.1' 
Driver info: driver.version: unknown 
[13:14:13] E/launcher - WebDriverError: Timed out waiting for driver server to start. 
Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T19:05:32.194Z' 
System info: host: 'QA-01', ip: '10.1.1.80', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '9.0.1' 
Driver info: driver.version: unknown 
    at WebDriverError (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\error.js:27:5) 
    at Object.checkLegacyResponse (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\error.js:546:15) 
    at parseHttpResponse (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\http.js:509:13) 
    at doSend.then.response (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\http.js:441:30) 
    at process._tickCallback (internal/process/next_tick.js:109:7) 
From: Task: WebDriver.createSession() 
    at Function.createSession (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:769:24) 
    at createDriver (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\index.js:170:33) 
    at Builder.build (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\index.js:635:14) 
    at Hosted.getNewDriver (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\built\driverProviders\driverProvider.js:53:33) 
    at Runner.createBrowser (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\built\runner.js:195:43) 
    at q.then.then (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\built\runner.js:339:29) 
    at _fulfilled (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\q\q.js:834:54) 
    at self.promiseDispatch.done (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\q\q.js:863:30) 
    at Promise.promise.promiseDispatch (C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\q\q.js:796:13) 
    at C:\Users\USER.NAME\AppData\Roaming\npm\node_modules\protractor\node_modules\q\q.js:556:49 
[13:14:13] E/launcher - Process exited with error code 199 

:

에지는 (제한 시간이 시작하는 드라이버 서버에 대한 대기) 다음과 같은 실패 비동기 실행 문제가 있음에도 불구하고 테스트를 실행하려고 시도하십시오.

이 설정은 이전에 사용한 설정보다 좋지만 전반적인 결과는 같습니다. 이 컴퓨터의 각도기 테스트는 MS Edge (16299)에서 실행되지 않습니다.

모든 통찰력이나 조언을 주시면 감사하겠습니다.

감사합니다.

+0

는 셀레늄 주소가'/ WD/hub' 포함되지해야 하는가? 그걸 추가하려고 시도 해봤습니까? – tehbeardedone

+0

@tehbeardedone MS Edge로 테스트 할 수있는 한 Selenium (또는 webdriver-manager) 대신 MS Webdriver를 사용합니다. 이전 버전의 Edge 및 MS Webdriver에서 동일한 설정 (spec 및 conf)을 사용할 수 있으며 브라우저를 열고 테스트를 실행하려고합니다. 따라서 각도기 테스트의 경우에는 지원되지 않거나 깨지지 않았거나 아직 찾지 못한 설정이 필요합니다. – kharkins224

답변

0

내가 수집 할 수있는 부분에서 각도 드라이버에게 Edge 드라이버를 찾을 위치를 알려줘야합니다. 구성에 seleniumArgs을 추가한다고 언급 한 블로그 게시물을 몇 개 발견했습니다.

seleniumArgs: ['-Dwebdriver.edge.driver=your/path/to/MicrosoftWebDriver.exe'] 
+0

아직 성공하지 못했지만 몇 가지 변형을 시도했습니다. 그러나, 필요하지 않은 오래된 버전의 Edge와 MS Webdriver가 있습니다. MS Webdriver를 시작하고 Confractor를 conf.js 파일과 함께 실행하기 만하면됩니다. – kharkins224

0

시간이 더 걸리고 또 다른 Windows 10 컴퓨터에서 작업 한 후에이 간단한 테스트를 성공적으로 수행했습니다.

테스트의 적절한 실행을 방해하는 특정 기계에 뭔가가 있다고 결론 지을 수 있습니다. 그게 뭔지 알 수는 없었지만, "그게 효과가 있니?" 질문에 답한다. 그것은 (사람이 기대하는 것입니다) 않습니다.

conf.js :

// conf.js 
exports.config = { 
    directConnect: false, 
    framework: 'jasmine', 
    specs: ['./spec/spec.js'], 
    seleniumAddress: 'http://localhost:4444/wd/hub', 

    multiCapabilities: [ 
    { 'browserName': 'chrome' }, 
    { 'browserName': 'firefox', 'marionette': true }, 
    { 'browserName': 'MicrosoftEdge' } 
    ] 
}; 

spec.js :

// spec.js 
describe('Protractor Demo App', function() { 
    it('should have a title', function() { 
    browser.get('http://juliemr.github.io/protractor-demo/'); 

    expect(browser.getTitle()).toEqual('Super Calculator'); 
    }); 
}); 

결과 :

[10:07:15] I/launcher - 0 instance(s) of WebDriver still running 
[10:07:15] I/launcher - chrome #01 passed 
[10:07:15] I/launcher - MicrosoftEdge #21 passed 
[10:07:15] I/launcher - firefox #11 passed 
관련 문제