2017-12-05 3 views
1

Ich arbeite an einem Projekt, um Knoten/Winkelanwendungen mit Protractor und Jasmine zu testen. Ich habe ein POC, das in den meisten Browsern funktioniert, aber mit MS Edge viele Probleme hat. Hier ist meine Umgebung:Nicht in der Lage, Winkelmesser/Jasmin-Tests mit Microsoft Edge auszuführen

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 

Wenn ich die Tests in Chrome, Firefox laufen, und IE (11) das Verhalten ist in Ordnung (Tests laufen mit den erwarteten Ergebnissen). Mit MS Edge schlägt der Prozess jedoch fehl, bevor die Testspezifikation überhaupt ausgeführt werden kann.

Beispiel Code/Ausgabe verwenden Sie das Winkelmesser Tutorial, aber ich habe das gleiche Problem, wenn Sie mit unserer Anwendung arbeiten.

Arbeiten conf.js (für Chrome und Firefox)

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" }//, 
] 
} 

Failing conf.js (für MS Rand)

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

Wenn ich den Test für MS Edge nach dem Start des Micro ausführen Soft-Web-Treiber die folgenden Ereignisse eintritt:

$ 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 

Das Problem scheint irgendwo zu sein, dass er sagt, es den Server auf ‚localhost‘ verwendet, aber dann macht Anfragen auf ‚127.0.0.1‘ statt. In der Theorie sind sie gleich. Aber im Betrieb reagiert nur 'localhost'. Wenn ich versuche, auf 127.0.0.1:17556 zuzugreifen, reagiert es nicht.

This website could not be found 
Error Code: INET_E_RESOURCE_NOT_FOUND 

Ich habe schon eine lange Zeit auf der Suche (hier SQA und die Protactor Diskussionen über GitHub) auf diesem für Informationen, aber noch keine Lösung gefunden. Einige Diskussionen auf GitHub zeigen, dass MS-Edge-Tests mit Protractor an einem Punkt funktionierten. Kann jemand mit dieser Version von MS Edge und MS Webdriver erfolgreich Winkelmesser-Tests durchführen?

Ein letztes Bit der Info: Ich habe Zugriff auf einen anderen Windows 10-Computer, der eine ältere Version von Edge (10240) hat. Auf diesem Rechner habe ich dieses Problem nicht (localhost vs. 127.0.0.1), aber es ist alt genug, um Probleme mit async zu haben, und ich kann es nicht zum Testen mit Protractor verwenden.

Danke!

UPDATE

Die Spec-Datei nicht geändert hat, aber ich habe die Config-Datei (conf.js) aktualisiert:

// 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' } 
    ] 
}; 

Wenn diese Funktion aktiviert Chrome und Firefox sind in der Lage, den Test zu laufen.

Rand schlägt mit dem folgenden (Timeout für Treiber-Server warten zu starten):

$ 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 

nach wie vor - das gleiche Setup auf einer älteren Version von Windows 10, Edge (10240), und der Edge-Treiber Versuchen Sie, die Tests auszuführen (wenn auch mit dem asynchronen Ausführungsproblem).

Dieses Setup ist wahrscheinlich besser als das, was ich vorher verwendet habe, aber das Gesamtergebnis ist das gleiche. Winkelmessertests (auf diesem Gerät) werden nicht in MS Edge (16299) ausgeführt.

Jeder Einblick oder Rat wird sehr geschätzt.

Danke!

+0

Sollte die Selen-Adresse nicht enthalten '/ wd/hub'? Haben Sie versucht, das hinzuzufügen, um zu sehen, ob es funktioniert? – tehbeardedone

+0

@tehbeardedone Soweit ich feststellen kann, testet MS Edge den MS Webdriver anstelle von Selenium (oder webdriver-manager). Es ist in Bezug darauf, dass ich das gleiche Setup (spec und conf) mit einer älteren Version von Edge und MS Webdriver verwenden kann, und es öffnet den Browser und versucht, den Test auszuführen. Es scheint also, dass es für den Gradmesser-Test entweder kaputt ist, nicht unterstützt wird, oder ein Setup benötigt, das ich noch nicht gefunden habe. – kharkins224

Antwort

0

Von dem, was ich sammeln kann, müssen Sie dem Winkelmesser sagen, wo der Edge-Treiber zu finden ist. Ich habe ein paar Blogposts gefunden, in denen erwähnt wird, dass seleniumArgs zur Konfiguration hinzugefügt wird.

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

Ich habe einige Variationen versucht, aber ohne Erfolg. Aber die Sache ist, mit der älteren Version von Edge und MS Webdriver, die nicht notwendig ist. Ich muss nur den MS Webdriver starten und den Gradmesser mit der Datei conf.js ausführen. – kharkins224

0

Nach zusätzlicher Zeit und Arbeit mit noch einer anderen Windows 10 Maschine habe ich erfolgreich diesen einfachen Test zum Laufen bekommen.

Ich kann nur schlussfolgern, dass auf dieser speziellen Maschine etwas war, das die ordnungsgemäße Ausführung des Tests verhinderte. Ich konnte nicht herausfinden, was das war, aber das "funktioniert es?" Frage wird beantwortet. Es tut (was man erwarten würde).

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

Ergebnisse:

[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 
Verwandte Themen