Chromedriver: сеанс удален из-за сбоя страницы - PullRequest
0 голосов
/ 02 мая 2018

Я пишу тесты для моего приложения AngularJS, используя транспортир и жасмин .

Я проверяю случай загрузки файла, используя код ниже:

const fileElem = element(by.css('input[type="file"]'));

fileElem.sendKeys(absoluteFilePath);

browser.sleep(500);

Он работает локально со следующими пакетами:

"chromedriver": "2.38.2", "protractor": "5.3.1", Chrome - v.66.0.3359.139

Но когда я запускаю эти тесты на GitLab CI, я получаю сообщение об ошибке:

[chrome # 01] F ✗ должен загрузить файл

[chrome # 01] - Сбой: неизвестная ошибка: сеанс удален из-за падение страницы

[chrome # 01] из неизвестной ошибки: невозможно определить состояние загрузки

[chrome # 01] из вкладки вылетел

[chrome # 01] (информация о сеансе: chrome без головы = 65.0.3325.181)

[chrome # 01] (Информация о драйвере: chromedriver = 2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb), платформа = Linux 4.13.5-coreos-r2 x86_64)

Я использую директиву ng-file-upload .

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 02 мая 2018

sendKeys введите строковый символ за символом, модель будет обнаруживать изменения при вводе каждого символа. Таким образом, если путь к файлу имеет 10 символов, модель обнаружит изменение в 10 раз. Каждый раз, когда изменение модели запускает загрузку файла. Но путь к файлам первых 9 раз неверен, и поэтому частая загрузка файлов приводит к сбою браузера.

const fileElem = element(by.css('input[type="file"]'));

// input file path by javascript in silent to avoid multiple model change
browser.executeScript(
   'arguments[0].value=arguments[1];',
   fileElem.getWebElement(),
   absoluteFilePath 
);

// input a blank space at the end of file path 
// to let model detect change, then trigger file uploading.
fileElem.sendKeys(" "); 
...