Pregunta

Tengo las siguientes pruebas, que se ejecuta bien, cuando ejecuto de forma local y en la salsa (al menos la mayoría del tiempo) usando firefox y 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);
            });
    });
 });

Pero cuando inicio internet explorer o safari, tengo todo tipo de errores, mientras que la página funciona bien cuando se prueba de forma manual.Para IE que obtengo:

Mensaje:UnknownError:Error de JavaScript (ADVERTENCIA:El servidor no proporcionar cualquier stacktrace información) Comando de duración o el tiempo de espera:97 milisegundos Construir info:versión:'2.30.0', de revisión:'dc1ef9c', tiempo:'2013-02-19 00:15:27' información del Sistema:os.nombre:"Windows Server 2008 R2", os.arco:'x86', os.versión:'6.1', java.versión:'1.6.0_35 de la Sesión ID:42b30348-8598-4edb-923e-a7019ced6eb0 información del Conductor:org.openqa.el selenio.es decir.InternetExplorerDriver Capacidades [{plataforma=WINDOWS, elementScrollBehavior=0, javascriptEnabled=true, enablePersistentHover=true, ignoreZoomSetting=false, browserName=internet explorer, enableElementCacheCleanup=true, unexpectedAlertBehaviour=cerrar, version=10, cssSelectorsEnabled=true, ignoreProtectedModeSettings=false, requireWindowFocus=false, allowAsynchronousJavaScript=false, handlesAlerts=true, initialBrowserUrl=, nativeEvents=true, takesScreenshot=true}]

Error:Error mientras se espera para el Transportador para la sincronización con la página:{"pila":"TypeError:No se puede obtener la propiedad 'get' undefined o nula referencia en función Anónima (Desconocido código de secuencia de comandos:25:5) en función Anónima (Desconocido el código de secuencia de comandos:21:14) en Anónimo función (Desconocido el código de secuencia de comandos:21:2)","description":"no se puede obtener la propiedad 'get' undefined o nula referencia","numero":-2146823281}

Y para Safari:

UnknownError:Se detecta una página de evento de descarga;ejecución de secuencias de comandos no funciona a través de la carga de la página.(ADVERTENCIA:El servidor no proporcionar cualquier stacktrace información) Comando de duración o el tiempo de espera:384 milisegundos Construir info:versión:'2.33.0', de revisión:'4e90c97', tiempo:'2013-05-22 15:32:38' Información del sistema:os.nombre:"Windows Server 2008 R2", os.arco:'x86', os.versión:'6.1', java.versión:'1.6.0_35' ID de sesión:null Información del conductor:org.openqa.el selenio.safari.SafariDriver Capacidades [{plataforma=WINDOWS, javascriptEnabled=true, cssSelectorsEnabled=true, secureSsl=true, browserName=safari, takesScreenshot=true, version=5.1.7}]

Estoy confsued acerca de las razones.Traté de simples pruebas con los mismos resultados, traté de local y remoto url y he probado de todo tipo de demoras como waitForAngular, wait y ptor ignoreAsynch = true.Ninguno de ellos conducen a los resultados deseados.Alguna sugerencia?

Mi transportador archivo de configuración:

// 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
        }
    };

Mientras no importa, puedo usar grunt-transportador corredor de la ejecución de múltiples instancias de forma secuencial.

           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'
]);
¿Fue útil?

Solución

Hugo, Este es un problema con ciertas configuraciones de prueba que fue parcialmente resuelto en el Transportador de 0,17 y más resuelta definitivamente en el 0,18%.Yo recomendaría actualizar el transportador a la última (0.18.1 en el momento de este post) y ver si eso soluciona el problema.

Pertinentes entradas changelog:

v0.18

(10aec0f) fix(pageload):aumentar el tiempo de espera

Los 300 ms esperar causado problemas cuando las pruebas de IE en Salsa de Laboratorios.Parece demasiado corto."del navegador.get ()", invariablemente, se agotó.El aumento solucionado nuestro problema.

v0.17

(a0bd84b) fix(pageload):añadir una espera durante el transportador.get() para resolver descargar temas

Algunos sistemas no esperar a que el navegador evento unload para terminar antes de comenzar el asincrónica de la ejecución del script.

Cierra #406.Cierra #85.

Espero que ayude!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top