Voici un test Protractor:Comment déboguer des demandes HTTP brisées dans Protractor?
// Page object
import { $, browser, by, element } from 'protractor';
export class MediaPage {
goTo(route: string) {
browser.get(route);
browser.wait(browser.ExpectedConditions.visibilityOf(element(by.css('app-image-container'))), 10000);
}
getImageBlocks() {
return element.all(by.css('app-image-container'));
}
}
// Test
import { browser } from 'protractor';
import { MediaPage } from './app.po';
describe('Media page',() => {
let page: MediaPage;
beforeEach(() => {
page = new MediaPage();
});
it ('should display list of images',() => {
page.goTo('/media');
//expect(page.getImageBlocks().count()).toEqual(20);
});
});
Aussi, j'ai proxy d'entreprise et ces paramètres dans protractor.config:
capabilities: {
browserName: 'chrome',
proxy: {
proxyType: 'manual',
httpProxy: 'http://proxy.xxxxx.com:80',
sslProxy: 'http://proxy.xxxxx.com:80'
},
chromeOptions: {
//binary: 'F:/Program/GoogleChromePortable/App/Chrome-bin/chrome.exe',
args: ['--test-type', '--no-proxy-server', '--auto-open-devtools-for-tabs'],
extensions: []
}
Lorsque j'ouvre la page dans le navigateur, il devrait charger les données de l'API en utilisant la requête HTTP. Appp fonctionne sous localhost: 4200, API permet des demandes d'origines croisées. L'application fonctionne correctement, mais le test se bloque pendant 10 secondes alors qu'il attend le chargement de la page puis sa mort. Je ne peux pas ouvrir Dev Console dans Chrome car le test s'arrête, je ne peux pas utiliser console.log() car la console est invisible.
Question: Comment puis-je savoir ce qui est arrivé à la requête HTTP et pourquoi elle ne charge pas les données? Je viens de réaliser que c'est probablement parce qu'il ne peut pas envoyer de requête quand le proxy est désactivé, mais la question est la même, comment puis-je voir (déboguer) la requête HTTP dans Protractor si je n'ai pas accès aux outils de développement. En outre, lorsque j'essaie de démarrer Chrome avec proxy activé, le chargement de mon application est intercepté par le pare-feu d'entreprise, ZScaler, et la page est bloquée car non sécurisée. Est-il possible de forcer Chrome à ne pas envoyer d'informations sur les pages locales (localhost: 4200) au pare-feu?
Si vous cherchez un moyen de capturer les journaux de la console, alors https://sites.google.com/a/chromium.org/chromedriver/logging/performance-log cela aidera. – Barney