Chromedriver: сеанс удален из-за сбоя страницы

Я пишу тесты для своего приложения 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] (Информация о сеансе: headless chrome = 65.0.3325.181)

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

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

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


person Vadim Shashkov    schedule 02.05.2018    source источник
comment
В вашем коде нет части для нажатия кнопки «Отправить», чтобы начать загрузку. Так возникает ли проблема в этой строке: fileElem.sendKeys(absoluteFilePath или во время процесса загрузки?   -  person yong    schedule 02.05.2018
comment
@yong загружает файл об изменении модели. Итак, в этой строке: fileElem.sendKeys(absoluteFilePath); Он изменяет модель и загружает файл. Локально работает нормально.   -  person Vadim Shashkov    schedule 02.05.2018
comment
Загруженный файл также существует на удаленном компьютере?   -  person yong    schedule 02.05.2018
comment
Файл находится в папке с проектом. Он существует на удаленной машине.   -  person Vadim Shashkov    schedule 02.05.2018
comment
Я думаю, вы столкнетесь с той же проблемой, какой бы файл вы ни выбрали для загрузки, вы можете попытаться доказать мое предположение. Если да, то я могу понять первопричину.   -  person yong    schedule 02.05.2018
comment
Я могу сказать вам свое предположение о первопричине. При вводе пути к файлу через sendKeys модель обнаружит изменение при вводе каждого символа. Таким образом, если длина пути к файлу равна 10, модель обнаружит 10-кратное изменение. Каждый раз, когда смена модели запускает загрузку файла. Но первые 9 раз путь к файлу неверен, поэтому частая загрузка файлов приводит к сбою браузера.   -  person yong    schedule 02.05.2018


Ответы (2)


У меня была такая же проблема при запуске селена на моем vps. Через 5 часов я обнаружил, что слишком много незакрытых попыток использовать драйвер. попробуй убить их всех

pkill -f chrome*
person Marco Aprea    schedule 09.06.2020

sendKeys введите строку char за char, модель обнаружит изменение при вводе каждого символа. Таким образом, если путь к файлу имеет 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(" "); 
person yong    schedule 02.05.2018
comment
Не работает. Мы не можем установить <input type="file"> из javascript. - person Vadim Shashkov; 14.05.2018