Domanda

Ho i seguenti test, che corrono bene quando li corrono localmente e sulla salsa (almeno la maggior parte del tempo) usando Firefox e Chrome.

ptor = protractor.getInstance();

baseUrl = protractor.getInstance().params.sBaseUrl;
aRequiredTextFieldsKeys = [
'sFirstName',
'sLastName',
'sStreet',
'sZip',
'sCity'
];


describe('form', function ()
{
var sFormUrl = baseUrl + '#/form';

beforeEach(function ()
{
    ptor.get(sFormUrl);
});


describe('wholeForm', function ()
{

    it('fully filled form => required fields have correct class && submit leads to other route', function ()
    {

        function checkRequiredClass(el)
        {
            expect(el.getAttribute('class')).toContain('ng-valid-required');
        }

        // requried text-fields
        for (var i = 0; i < aRequiredTextFieldsKeys.length; i++) {
            var el = element(by.model('oFormData.' + aRequiredTextFieldsKeys[i]));
            el.sendKeys('a');
            checkRequiredClass(el);
        }

        // email
        var elEmail = element(by.model('oFormData.sEmail'));
        elEmail.sendKeys('jo@jo.de');
        checkRequiredClass(el);

        // birthday
        var elBirthday = element(by.model('oFormData.oBirthday'));
        elBirthday.sendKeys('1.1.1995');
        checkRequiredClass(el);

        // checkboxes
        var elCheck1 = element(by.model('oFormData.bAgb'));
        elCheck1.click();
        checkRequiredClass(elCheck1);

        var elCheck2 = element(by.model('oFormData.bPrivatePolicy'));
        elCheck2.click();
        checkRequiredClass(elCheck2);
        // hack upload bon
        ptor.executeScript(function ()
        {
            var scope = $('#application-form-id').scope();
            scope.oFormData.bBonUploaded = true;
        });

        // submit form
        element(by.className('btn-submit')).click();

        ptor.getCurrentUrl()
            .then(function (url)
            {
                expect(url).toNotBe(sFormUrl);
            });
    });
 });
.

Ma quando lancio Internet Explorer o Safari, ottengo tutti i tipi di errori, mentre la pagina funziona bene quando viene testata manualmente. Perché Ie ottengo:

.

Messaggio: UnknownError: Errore JavaScript (Attenzione: il server non ha fornito alcuna informazioni di stacktrace) Durata del comando o Timeout: 97 Milliseconds Build Info: Versione: '2.30.0', revisione: 'DC1EF9C', TEMPO: '2013-02-19 00:15:27' Info del sistema: OS.NAME: 'Windows Server 2008 R2', os.arch: 'x86', os.version: '6.1', Java.Version: '1.6.0_35' Session ID: 42B30348-8598-4EDB-923E-A7019EDB-923E-A7019CEDE6EB0 Informazioni driver: org.openqa.selenium.ie.internetexplorerDriver Capamente [{piattaforma= windows, elementcrollbehavior= 0, javasptenthead= true, EnablePerSistHover= True, IgnoreZoomSetting= False, BrowserName= Internet Explorer, EnableelementCacheCleanUp= TRUE, inaspettatoAlertbehaviour= resping, versione= 10, CSSELETTORSENACESSE= TRUE, IGNOREPROTECTUONIMODESETTISETTI= FALSE, RequirewinDowFocus= False, AllowAsynchronousjavaScript= falso, HandlsAlerts= True, InagnalBrowserurl=, NatureAvents= TRUE, takesscreenshot= true}]

Errore: errore durante l'attesa del protractor di sincronizzazione con la pagina: {"Stack": "TypeError: Impossibile ottenere la proprietà 'Get' di riferimento indefinito o nullo \na funzione anonima (sconosciuta Codice script: 25: 5) \na funzione anonima (codice script sconosciuto: 21: 14) \nad anonimo Funzione (codice di script sconosciuto: 21: 2) "," Descrizione ":" Impossibile ottenere la proprietà 'Get' di indefinito o riferimento NULL "," Numero ": - 2146823281}

e per safari:

.

UnknownError: rilevato un evento di scarico della pagina; L'esecuzione dello script non funziona attraverso i carichi di pagina. (Avvertenza: il server non ha fornito alcuna informazione di stacktrace) Durata del comando o Timeout: 384 millisecondi Informazioni sulla costruzione: versione: '2.33.0', revisione: '4E90C97', TEMPO: '2013-05-22 15:32:38' INFO SYSTEM: OS.NAME: 'Windows Server 2008 R2', OS.ARCH: 'X86', OS.VERSION: '6.1', JAVA.Version: '1.6.0_35' ID sessione: NULL Informazioni sul conducente: org.openqa.selenium.safari.safaridriver Funzionalità [{piattaforma= Windows, JavaScriptenabled= True, CSSSectorsENAbled= True, SecuressL= TRUE, BROWSERNAME= Safari, TakessCreenShot= True, Versione= 5.1.7}]

Sono confuso sulle ragioni. Ho provato test più semplici con gli stessi risultati, ho provato URL locali e remoti e ho provato tutti i tipi di ritardi come waitForAngular, wait e ptor ignoreAsynch = true. Nessuno di loro porta al risultato desiderato. Qualche suggerimento?

Il mio file di configurazione del protractor:

// A reference configuration file.
    exports.config = {

        seleniumServerJar: null,
        seleniumPort: null,
        chromeOnly: false,
        // Additional command line options to pass to selenium. For example,
        // if you need to change the browser timeout, use
        // seleniumArgs: ['-browserTimeout=60'],
        seleniumArgs: [],
        sauceUser: 'saucesuer',
        sauceKey: 'key',
        allScriptsTimeout: 120000,
        specs: [
            'test/e2e/**/*.js',
        ],

        // https://code.google.com/p/selenium/wiki/DesiredCapabilities
        // https://code.google.com/p/selenium/source/browse/javascript/webdriver/capabilities.js
        capabilities: {
            'browserName': 'phantomjs',
            'phantomjs.binary.path':'node_modules/phantomjs/bin/phantomjs'
        },


        // Selector for the element housing the angular app - this defaults to
        // body, but is necessary if ng-app is on a descendant of <body>
        rootElement: 'body',

        onPrepare: function ()
        {
    //        driver.manage().timeouts().setScriptTimeout(60000);
        },

        params: {
            sBaseUrl: 'https://dev.com/'

        },
        baseUrl: 'http://localhost:8000',

        framework: 'jasmine',

        // ----- Options to be passed to minijasminenode -----
        //
        // See the full list at https://github.com/juliemr/minijasminenode
        jasmineNodeOpts: {
            // onComplete will be called just before the driver quits.
            onComplete: null,
            // If true, display spec names.
            isVerbose: true,
            // If true, print colors to the terminal.
            showColors: true,
            // If true, include stack traces in failures.
            includeStackTrace: true,
            // Default time to wait in ms before a test fails.
            defaultTimeoutInterval: 120000
        }
    };
.

Mentre non sembra importante, utilizzo Grunt-Grottractor Runner per eseguire più istanze sequenzialmente.

           chrome: {
            options: {
                args: {
                    browser: 'chrome',
                    "idle-timeout": 120
                }
            }
        },
        firefox: {
            options: {
                args: {
                    browser: 'firefox'
                }
            }
        },
        ie9: {
            options: {
                args: {
                    browser: 'internet explorer',
                    version: '9',
                    "idle-timeout": 120
                }
            }
        },
        ie10: {
            options: {
                args: {
                    browser: 'internet explorer',
                    version: '10'
                }
            }
        },
        safari7: {
            options: {
                args: {
                    browser: 'safari',
                    version: '7'
                }
            }
        },
        safari6: {
            options: {
                args: {
                    browser: 'safari',
                    version: '6'
                }
            }
        },
        safari5: {
            options: {
                args: {
                    browser: 'safari',
                    version: '5'
                }
            }
        }
    }

grunt.registerTask('e2eall', [
    'protractor:ie9',
    'protractor:ie10',
    'protractor:safari5',
    'protractor:safari6',
    'protractor:safari7',
    'protractor:firefox',
    'protractor:chrome'
]);
.

È stato utile?

Soluzione

hugo, Questo è un problema con alcune configurazioni di test che è stata parzialmente risolta in GOTTRACTOR 0.17 e più definitivamente risolto in 0,18.Consiglierei di aggiornare il tuo goniometro all'ultimo ( 0.18.1 al momento di questo post) e vedendo se risolve il tuo problema.

Voci di Changelog pertinenti:

v0.18

.

(10AEC0F) Fix (Pageload): Aumentare Timeout di attesa

L'attesa 300 ms ha causato problemi durante il test cioè sui laboratori di salsa.Sembra troppo breve."Browser.get ()" invariabilmente scaduto.Aumentandolo ha risolto il nostro problema.

v0.17

.

(A0BD84b) Fix (Pageload): aggiungere un attesa durante il protractor.get () per risolvere i problemi di scarico

Alcuni sistemi non dovrebbero aspettare che il browser scarica l'evento per finire prima di iniziare l'esecuzione di script asincrona.

Chiude # 406.Chiude # 85.

Spero che ti aiuti!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top