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;
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
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. –