[Chrome 59+] SendKeys(filePath) не аттачит файл к стандартному input type=file

chromedriver
selenium
chrome
webdriver
Теги: #<Tag:0x00007fedb7b030e0> #<Tag:0x00007fedb7b02f28> #<Tag:0x00007fedb7b02d48> #<Tag:0x00007fedb7b02c08>

(Alexander) #1

Стандартный

input id=“ClientContactSignatureFile” name=“File” onchange=“showClientContactSignatureImage(this)” type=“file” value=""

Телериковский

input class=“file-input” type=“file” name=“AttachedFile” id=“wi-attached-file” max-len=“100000” onchange=“fileMngr.onFileChange()” style=“z-index: -1; width: 70px; overflow: hidden; display: none;”

В веб приложении есть два типа инпутов для аттача файлов. Один телериковский, второй обычный, стандартный. Оба ранее обрабатывались простым input.SendKeys(filePath) методом для аплоада файлов. После обновления Хрома на рабочих машинах с 58 до 62 версии стандартные инпуты перестали принимать файлы. Метод выполняется без ошибок и тест идет дальше. Телериковские работают ок.

Бежит автотест. Как должно быть:

  1. SendKeys(filePath);
  2. рядом с кнопкой аттача появляется миниатюра приаттаченого изображения
  3. Жмем Save и картинка сохраняется на странице там где ей положено быть

Как есть:

  1. SendKeys(filePath);
  2. превью не появляется, в value параметре инпута (не том что в DOM, а том что в пропертях элемента) числится путь к файлу
  3. после Save файл не числится загруженным

Вероятно ивент change не триггерится, что-то такое.
А теперь воспроизвожу руками. Два кейса.

№1:

  1. Запускаю браузер, захожу на страницу
  2. Кликаю по иконке, выбираю файл - превью есть
  3. Сохраняю - файл приаттачен

№2:

  1. Ставлю точку остановки перед SendKeys(filePath) методом
  2. Запускаю под дебагом автотест
  3. Тест становится на паузу
  4. Кликаю по иконке руками, выбираю файл - превью НЕТ
  5. Сохраняю - файл НЕ приаттачен

На версии Хрома 58 данной проблемы нет. На первый взгляд все понятно - ага, обновился браузер, появилась проблема. Но с чем тогда связан тот факт, что в руками запущенном браузере все ок, а в том что запущен автотестом - баг. Может кто сталкивался, идеи? Спасибо.


(Борис Осипов) #2

chromedriver последней версии 2.33?


(Alexander) #3

ChromeDriver 2.33
Селениум 3.6.0

Обновился недавно. Но, пробовал откатываться, и бага есть при различных конфигурациях, только когда откатил сам браузер до 58 версии - баг не воспроизвелся.