J'essaye d'écrire des tests unitaires de barebones en utilisant selenium-webdriver
. Afin de tester correctement mon application, je dois préparer chaque cas de test avec un cookie.Comment puis-je ajouter correctement un cookie en utilisant selenium-webdriver?
Je suis en train de faire ce qui suit:
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....
});
Mes tests exécutés (c.-à-appeler addCookie
ne lève/rejette pas), mais les valeurs de cookie jeu ne sera pas utilisé lorsque le navigateur fait une demande contre mon application.
Quand je tente de me connecter les cookies Posé comme:
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);
il me dira qu'il n'y a pas les cookies ont été fixés:
set []
J'ai aussi creusé dans les sources de selenium-webdriver
et capables de utilisez le débogueur pour savoir que la chaîne de cookie correcte sera construite et enqueued here.
Comment ajouter correctement un cookie pour qu'il soit utilisé par l'instance du pilote?
Pour ceux qui se demandent à propos async/await
, j'ai désactivé les promesses gérées en utilisant:
webdriver.promise.USE_PROMISE_MANAGER = false;
Cela signifie-t-il que si mon serveur a besoin du navigateur pour envoyer le cookie, j'ai besoin d'utiliser 'get' =>' addCookie' => 'get' ou y a-t-il un raccourci? – m90
Je ne suis au courant d'aucun raccourci. Vous n'avez besoin d'appeler 'get' que si le domaine actuel n'est pas celui attendu pour le cookie. Le cookie restera alors et sera envoyé au serveur tant que le navigateur reste ouvert. –