2017-09-12 2 views
0

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?

+1

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

Répondre

0

Pour savoir comment voir la requête HTTP, je vous suggère d'installer un outil de contrôle de la circulation comme le bien connu Fiddler et mis Chrome pour utiliser le proxy Fiddler (généralement http://127.0.0.1:8888 mais vous pouvez changer le port dans les paramètres Fiddler) Il a m'a sauvé énormément de temps