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 ✗ should upload the file

[chrome #01] - Failed: unknown error: session deleted because of page crash

[chrome #01] from unknown error: cannot determine loading status

[chrome #01] from tab crashed

[chrome #01] (Session info: headless chrome=65.0.3325.181)

[chrome #01] (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Linux 4.13.5-coreos-r2 x86_64)

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

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

Данный код не включает часть, чтобы нажать кнопку «Отправить», чтобы начать загрузку. Итак, проблема связана с этой строкой: fileElem.sendKeys(absoluteFilePath или во время процесса загрузки?

yong 02.05.2018 12:38

@yong загружает файл об изменении модели. Итак, в этой строке: fileElem.sendKeys(absoluteFilePath); Он меняет модель и выгружает файл. Локально работает нормально.

Vadim Shashkov 02.05.2018 12:40

Загруженный файл также существует на удаленном компьютере?

yong 02.05.2018 14:46

Файл находится в папке с проектом. Он существует на удаленной машине.

Vadim Shashkov 02.05.2018 14:53

Я думаю, вы столкнетесь с той же проблемой, какой бы файл вы ни выбрали для загрузки, вы можете попытаться доказать мое предположение. Если да, то я могу понять первопричину.

yong 02.05.2018 14:57

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

yong 02.05.2018 15:11
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
6
4 161
2

Ответы 2

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(" "); 

Не работает. Мы не можем установить <input type = "file"> из javascript.

Vadim Shashkov 14.05.2018 15:26

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

pkill -f chrome*

Другие вопросы по теме