سؤال

لدي الاختبارات التالية ، والتي تعمل على ما يرام عندما تشغيلها محليا على صلصة (على الأقل في معظم الوقت) باستخدام فايرفوكس و كروم.

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

ولكن عندما كنت إطلاق إنترنت إكسبلورر أو سفاري ، أحصل على كل أنواع الأخطاء ، بينما الصفحة يعمل بشكل جيد عند اختبارها يدويا.أي أحصل على:

الرسالة:UnknownError:خطأ جافا سكريبت (تحذير:الخادم لم تقدم أي stacktrace المعلومات) الأمر المدة أو المهلة:97 ميلي ثانية بناء معلومات:الإصدار:'2.30.0' ، التنقيح:'dc1ef9c' ، الوقت:'2013-02-19 00:15:27' معلومات النظام:نظام التشغيل.الاسم:'Windows Server 2008 R2', نظام التشغيل.القوس:'86', نظام التشغيل.الإصدار:'6.1', java.الإصدار:'1.6.0_35' الدورة ID:42b30348-8598-4edb-923e-a7019ced6eb0 معلومات السائق:org.openqa.السيلينيوم.ie.InternetExplorerDriver قدرات [{منصة=WINDOWS elementScrollBehavior=0, javascriptEnabled=صحيح ، enablePersistentHover=صحيح ، ignoreZoomSetting=false ، browserName=internet explorer ، enableElementCacheCleanup=صحيح ، unexpectedAlertBehaviour=اقالة, version=10, cssSelectorsEnabled=صحيح ، ignoreProtectedModeSettings=false ، requireWindowFocus=false ، allowAsynchronousJavaScript=false ، handlesAlerts=صحيح ، initialBrowserUrl=, nativeEvents=صحيح ، takesScreenshot=true}]

خطأ:خطأ أثناء انتظار منقلة إلى تزامن مع الصفحة:{"كومة":"TypeError:قادر على الحصول على خاصية 'على' أو غير معرف مرجع فارغة في وظيفة مجهول (غير معروف رمز البرنامج النصي:25:5) في وظيفة مجهول (غير معروف رمز البرنامج النصي:21:14) في المجهول وظيفة (غير معروف رمز البرنامج النصي:21:2)","description":"قادر على الحصول على خاصية 'الحصول على' من غير معرف أو مرجع فارغة" ، "عدد":-2146823281}

و سفاري:

UnknownError:الكشف عن صفحة تفريغ الحدث ؛ تنفيذ البرنامج النصي لا يعمل عبر تحميل الصفحة.(تحذير:الخادم لم تقدم أي stacktrace المعلومات) الأمر المدة أو المهلة:384 ميلي ثانية بناء معلومات:الإصدار:'2.33.0' ، التنقيح:'4e90c97' ، الوقت:'2013-05-22 15:32:38' معلومات النظام:نظام التشغيل.الاسم:'Windows Server 2008 R2', نظام التشغيل.القوس:'86', نظام التشغيل.الإصدار:'6.1', java.الإصدار:'1.6.0_35' معرف جلسة العمل:null معلومات برنامج التشغيل:org.openqa.السيلينيوم.سفاري.SafariDriver قدرات [{منصة=WINDOWS javascriptEnabled=صحيح ، cssSelectorsEnabled=صحيح ، secureSsl=صحيح ، browserName=سفاري ، takesScreenshot=true, version=5.1.7}]

أنا confsued عن الأسباب.حاولت أبسط الاختبارات مع نفس النتائج ، حاولت المحلية والبعيدة عناوين و حاولت جميع أنواع التأخير مثل waitForAngular, wait و ptor ignoreAsynch = true.أيا منها لا يؤدي إلى النتيجة المرجوة.أي اقتراحات ؟

بلدي منقلة config:

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

في حين أنه لا يبدو أن هذه المسألة, استخدم نخر-منقلة عداء تشغيل مثيلات متعددة بالتتابع.

           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'
]);
هل كانت مفيدة؟

المحلول

هوغو ، هذه قضية معينة اختبار التكوينات التي تم حلها جزئيا في المنقلة 0.17 وأكثر نهائيا حلها في 0.18.أنصح بتحديث منقلة الخاص بك إلى أحدث (0.18.1 في ذلك الوقت من هذا المنصب) ورؤية ما إذا كان هذا يحل المشكلة.

ذات الصلة التغيير مقالات:

v0.18

(10aec0f) الإصلاح(pageload):زيادة زمن الانتظار

300 مللي الانتظار تسبب مشاكل عند اختبار أي على صلصة مختبرات.يبدو قصيرة جدا."المتصفح.الحصول على()" دائما مهلة.زيادة في حل مشكلتنا.

v0.17

(a0bd84b) الإصلاح(pageload):إضافة الانتظار خلال منقلة.الحصول على() حل تفريغ القضايا

بعض الأنظمة لن ننتظر المتصفح تفريغ حال الانتهاء قبل بداية غير متزامن تنفيذ البرنامج النصي.

يغلق #406.يغلق #85.

على أمل أن يساعد!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top