J'exécute des tests avec rapporteur, mais il semble impossible d'accéder à l'objet "fenêtre" de JS. J'ai même essayé d'ajouter une balise dans mon fichier html qui contiendrait quelque chose comme
var a = window.location;
et puis essayez expect (a) mais je n'ai pas pu le faire fonctionner, j'ai toujours des références indéfinies ...
Comment dois-je procéder pour accéder aux variables qui sont dans la portée du navigateur?
En supposant que vous utilisez une version récente de Protractor, disons> = 1.1.0, espérons-le> = 1.3.1
Tenter d'accéder au code JS côté navigateur directement depuis Protractor ne fonctionnera pas car Protractor s'exécute dans NodeJS et chaque code côté navigateur est exécuté via Selenium JsonWireProtocol .
Sans plus de détails, un exemple pratique:
browser.get('https://angularjs.org/');
One-liner promet que, à partir d'aujourd'hui, se résout à '1.3.0-rc.3'
browser.executeScript('return window.angular.version.full;');
Vous pouvez l'utiliser directement dans une instruction expect, étant donné que l'attente de Protractor résout les promesses pour vous:
expect(browser.executeScript('return window.angular.version.full;')).
toEqual('1.3.0-rc.3');
Exemple plus long passant une fonction au lieu d'une chaîne plus sans expect
résoudre la promesse pour vous. c'est-à-dire pour plus de contrôle et pour faire quelque chose de fantaisiste avec le résultat.
browser.driver.executeScript(function() {
return window.angular.version.full;
}).then(function(result) {
console.log('NodeJS-side console log result: ' + result);
//=> NodeJS-side console log result: 1.3.0-rc.3
});