uaKorona
@uaKorona
Front-End разработчик

Как написать интеграционный тест (protractor) на мультизагрузку файлов в Chrome?

Всем привет

Решаю задачу по тестированию формы мультизагрузки файлов в браузере
Для мультизагрузки используется модуль angular-file-upload (https://github.com/nervgh/angular-file-upload)
Форму нужно проверить в двух браузерах в IE 11 версии и Chrome
Есть условие, что при мультизагрузки количество одновременно загружаемых файлов не должно быть более 5

Ок, для тестирования я использую Protractor (e2e тест-фреймворк сделанный на основе WebDriverJS)
Вот сам код теста
it('A user attaches fileы with correct existantion', function () {
        var validFile = '../test/filesToUpload/testxlsx.xlsx',
            validFile2 = '../test/filesToUpload/testxls.xls',
        var absolutePath = path.resolve(__dirname, validFile);
        var absolutePath2 = path.resolve(__dirname, validFile2);
        $('#ifile').sendKeys('"' +absolutePath2 + '" "' +absolutePath +'"');
        var absolutePath = path.resolve(__dirname, invalidFile);
        var errorMessageElement = $('.contactForm__errorMessage');
        expect(errorMessageElement.getText()).toEqual('');
    });

Немного поясню
В Chrome (и в IE) при выборе нескольких файлов для мультизагрузки - имена файлов заключаются в кавычки и пишутся через пробел.
Запускаю тест - в IE все ок (да, в IE как не странно), а в Chrome тест падает с ошибкой:
Т.е. хром не понимает мои два файла, заключенные в кавычки и разделенные пробелом.
UnknownError: unknown error: path is not absolute: "E:\MyProjects\tns\test\filesToUpload\testxls.xls"
"E:\MyProjects\tns\test\filesToUpload\testxlsx.xlsx"


Пробовал и с относительнями путями и с абсолютными - картина та же самая, в ИЕ все ОК, в хроме тест падает
Кто сталкивался, подскажите, плиз!
  • Вопрос задан
  • 3042 просмотра
Пригласить эксперта
Ответы на вопрос 2
sHinE
@sHinE
веб-разработчик, php/js/mysql и сопутствующее
Вариант чисто на шару, но слеши в другую сторону или экранировать в путях не пробовали?
Ответ написан
uaKorona
@uaKorona Автор вопроса
Front-End разработчик
В дебрях интернета нашел решение
для Хрома файлы должны быть отделены '\n'
Но в отличие от IE, имена файлов не должны быть обернуты в кавычки

if (browser.browserName === 'chrome') {
            resultPath = absolutePaths.join('\n');
        }
      
  if (browser.browserName === 'internet explorer') {
            var newAbsolutePaths = [];
            absolutePaths.forEach(function (path) {
                newAbsolutePaths.push('"' + path + '"');
            });
            resultPath = newAbsolutePaths.join(' ');
        }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы