1

Ich versuche, nackte Knochen Unit Tests mit selenium-webdriver zu schreiben. Um meine Anwendung richtig zu testen, muss ich jeden Testfall mit einem Cookie vorbereiten.Wie kann ich einen Cookie mit selen-webdriver korrekt hinzufügen?

Ich versuche, die folgendes zu tun:

it('should set cookies', async function() { 
    const driver = new webdriver.Builder().forBrowser('chrome').build(); 
    driver.manage().window().setSize(800, 600); 
    await driver.manage().addCookie({ 
     name: 'KEY', 
     value: 'COOKIE-VALUE', 
     domain: '.my.domain', 
     path: '/', 
     secure: false 
    }); 
    await driver.get('http://test.my.domain'); 
    // test following.... 
}); 

Meine Tests ausführen (dh addCookie Aufruf nicht/nicht werfen ablehnen), aber die Set-Cookie-Werte werden nicht verwendet werden, wenn der Browser meine Anfrage gegen macht Anwendung.

Wenn ich versuche, die gesetzten Cookies zu protokollieren wie:

await driver.manage().addCookie({ 
    name: 'KEY', 
    value: 'COOKIE-VALUE', 
    domain: '.my.domain', 
    path: '/', 
    secure: false 
}); 

const set = await driver.manage().getCookies(); 
console.log('set', set); 

es wird mir sagen, dass keine Cookies gesetzt wurden:

set [] 

Ich grub auch in die Quellen von selenium-webdriver und in der Lage Verwenden Sie den Debugger, um herauszufinden, dass die korrekte Cookie-Zeichenfolge erstellt wird und enqueued here.

Wie kann ich ein Cookie korrekt hinzufügen, damit es von der Treiberinstanz verwendet wird?

webdriver.promise.USE_PROMISE_MANAGER = false; 

Antwort

2

Verfahren addCookie fügen Sie ein Cookie an den aktuellen Domain, so dass Sie zunächst auf die gezielte navigiert werden müssen:


Für diejenigen fragen, über async/await habe ich die verwalteten Versprechen mit deaktiviert URL, um die Domain:

await driver.get('http://test.my.domain'); 
await driver.manage().addCookie({ 
    name: 'KEY', 
    value: 'COOKIE-VALUE', 
    domain: 'test.my.domain', 
    path: '/', 
    secure: false 
}); 

https://w3c.github.io/webdriver/webdriver-spec.html#add-cookie

+0

Bedeutet das, wenn mein Server den Browser benötigt, um den Cookie zu senden, muss ich 'get' =>' addCookie' => 'get' verwenden oder gibt es eine Verknüpfung dazu? – m90

+0

Mir ist keine Verknüpfung bekannt. Sie müssen nur "get" aufrufen, wenn die aktuelle Domäne nicht die erwartete für das Cookie ist. Der Cookie bleibt dann bestehen und wird an den Server gesendet, solange der Browser geöffnet bleibt. –

Verwandte Themen