2017-01-31 7 views
2

Ich versuche, einen Cookie in einem Winkelmesser Testfall zu setzen. Wir verwenden Protractor 3.3.0, Angular 1.5.x und Node.js 6.9.1Setzen von Cookies in Winkelmesser

Dies ist die Spezifikation:

(function() { 
    'use strict'; 

    describe('Dummytest', function() { 
     beforeEach(function() { 
      browser.get('./'); 
     }); 

     it('should set a cookie', function() { 
      browser.manage().addCookie("test", "fail_cookie", '/', 'localhost'); 
     }); 
    }); 
})(); 

Dies ist die Fehlermeldung erhalte ich:

 
    Message: 
    Failed: {"errorMessage":"Unable to set Cookie","request":{"headers":{"Accept-Encoding":"gzip,deflate","Connection":"Keep-Alive","Content-Length":"165","Content-Type":"application/json; charset=utf-8","Host":"localhost:45556","User-Agent":"Apache-HttpClient/4.5.1 (Java/1.8.0_77)"},"httpVersion":"1.1","method":"POST","post":"{\"cookie\":{\"path\":\"/\",\"domain\":\"localhost\",\"name\":\"test\",\"httpOnly\":false,\"hCode\":3556498,\"secure\":false,\"value\":\"fail_cookie\",\"class\":\"org.openqa.selenium.Cookie\"}}","url":"/cookie","urlParsed":{"anchor":"","query":"","file":"cookie","directory":"/","path":"/cookie","relative":"/cookie","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/cookie","queryKey":{},"chunks":["cookie"]},"urlOriginal":"/session/68875d10-f7b4-11f6-8f37-71161903ed83/cookie"}} 
    Build info: version: '2.52.0', revision: '4c2593c', time: '2016-02-11 19:06:42' 
    System info: host: 'XXXXXXXXX', ip: '10.##.##.230', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_77' 
    Driver info: driver.version: unknown 
    Stack: 
    UnableToSetCookieError: {"errorMessage":"Unable to set Cookie","request":{"headers":{"Accept-Encoding":"gzip,deflate","Connection":"Keep-Alive","Content-Length":"165","Content-Type":"application/json; charset=utf-8","Host":"localhost:45556","User-Agent":"Apache-HttpClient/4.5.1 (Java/1.8.0_77)"},"httpVersion":"1.1","method":"POST","post":"{\"cookie\":{\"path\":\"/\",\"domain\":\"localhost\",\"name\":\"test\",\"httpOnly\":false,\"hCode\":3556498,\"secure\":false,\"value\":\"fail_cookie\",\"class\":\"org.openqa.selenium.Cookie\"}}","url":"/cookie","urlParsed":{"anchor":"","query":"","file":"cookie","directory":"/","path":"/cookie","relative":"/cookie","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/cookie","queryKey":{},"chunks":["cookie"]},"urlOriginal":"/session/68875d10-f7b4-11f6-8f37-71161903ed83/cookie"}} 
    Build info: version: '2.52.0', revision: '4c2593c', time: '2016-02-11 19:06:42' 
    System info: host: 'XXXXXXXXXXXXX', ip: '10.##.##.230', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_77' 
    Driver info: driver.version: unknown 
     at WebDriverError (C:\Users\[username]\dev\project\node_modules\selenium-webdriver\error.js:27:5) 

Was mache ich falsch?

EDIT:

Ich habe einige weitere Experimente durchgeführt. Beachten Sie, dass ich die Domain geändert habe und dass es vor dem erfolgreichen Cookie-Lesen/Schreiben keine browser.get gibt.

(function() { 
    'use strict'; 

    describe('Dummytest', function() { 
     it('should set a cookie', function() { 
      browser.manage().addCookie("test", "fail_cookie", '/', '127.0.0.1'); 
      browser.manage().getCookie('test').then(function(cookie) { 
       console.log('cookie test', cookie); 
       browser.get('./'); 
       browser.manage().getCookie('test').then(function(cookie) { 
        console.log('cookie test 2', cookie); 
       }); 
      }); 
     }); 
    }); 
})(); 

Und dies ist die Ausgabe erhalte ich:

 
cookie test { path: '/', 
    domain: '127.0.0.1', 
    name: 'test', 
    httpOnly: false, 
    hCode: 3556498, 
    secure: false, 
    value: 'fail_cookie', 
    class: 'org.openqa.selenium.Cookie' } 
cookie test 2 null 

Wie Sie das Cookie sehen kann, ist nicht für die Domäne festgelegt ich kommen, wenn browser.get('./') anrufen. Wie kann ich einen Cookie für diese Domain setzen, ohne den Fehler in meiner ursprünglichen Frage auszulösen?

EDIT 2:

Gefunden eine andere Frage (Setting cookies before browser.get), die browser.driver.get zuerst zu nennen, sagt und dann die Cookie-Einstellung, aber zu tun, dass ich das gleiche UnableToSetCookieError bekommen, wie ich immer schon immer haben. Die Lösung ist also etwas anderes.

EDIT 3:

Auf einem halbbezogene Notiz Ich habe für die addCookie Funktion und deren Parameter eine echte harte Zeit zu finden Dokumentation haben. Besonders jetzt seit in der spätesten (vom 2016-01-31) Version des Winkelmessers erwartet es ein Objekt und nicht eine Liste von Parametern. Aber ich fand es schließlich und dachte, dass ich auch hier einen Link beinhalten könnten: https://github.com/SeleniumHQ/selenium/blob/022644c47c643ce6fe797d65e074329190129c1b/javascript/node/selenium-webdriver/lib/webdriver.js#L1075

EDIT 4:

Näher! Die Einstellung der Domäne auf .localhost (beachten Sie den Punkt (.) Am Anfang) scheint zu funktionieren. Wird weitere Untersuchungen durchführen und zurückmelden. In der Zwischenzeit, wenn jemand mir sagen kann, warum der Punkt wichtig ist und warum diese genaue Domain funktioniert, wäre ich sehr dankbar :)

+0

Werfen Sie einen Blick auf diese: http://stackoverflow.com/questions/489369/cani-i-use-localhost-as-the-domain-when-setting-an-http-cookie. Vielleicht könnte das helfen? – cnishina

+1

Hallo @Tobbe, Irgendwelche Neuigkeiten? Vielleicht können Sie Ihre eigene Frage beantworten, um Ergebnisse zu teilen? Ich habe gelesen, dass es Probleme gibt, 'localhost' zu verwenden, und dass' 127.0.0.1' ratsam ist, aber ich bin immer noch neu und versuche auch, Sitzungen am Leben zu erhalten. – firepol

+0

Mist. Entschuldigung, ich habe vergessen, darauf zurückzukommen, und jetzt habe ich vergessen, was die Lösung war :(Ich bin jetzt bei einer neuen Firma und habe keinen Zugriff mehr auf den Code, wo dies benötigt wurde. – Tobbe

Antwort

1

Einstellung BaseUrl zu 127.0.0.1 in meinem Winkelmesser.conf.js scheint eine ähnliche zu lösen Problem, das ich konfrontiert habe.

Verwandte Themen