t.me/atinfo_chat Telegram группа по автоматизации тестирования

selenide. Попытка скачать файл в названии которого кавычки

Теги: #<Tag:0x00007f74875f7078> #<Tag:0x00007f74875f6fb0> #<Tag:0x00007f74875f6ee8> #<Tag:0x00007f74875f6da8>

Добрый день!
При попытке скачать файл в названии которого присутствуют кавычки - получаю ошибку.

Использую метод download :

 File file = $(locator).download();

Получаю следующую ошибку:
ERROR com.codeborne.selenide.proxy.FileDownloadFilter - Failed to save downloaded file to D:\user\Documents\project\build\downloads\a9a9b0a3-0a22-4d7d-9379-ec4a33b9622b\файл" с "кавычками" да.xlsx for url ... java.io.FileNotFoundException: build\downloads\a9a9b0a3-0a22-4d7d-9379-ec4a33b9622b\файл" с "кавычками" да.xlsx.xlsx (Синтаксическая ошибка в имени файла, имени папки или метке тома)

Но при этом файл сохраняется как
D:\user\Documents\project\build\downloads\файл_с_кавычками_да.xlsx
а в D:\user\Documents\project\build\downloads\a9a9b0a3-0a22-4d7d-9379-ec4a33b9622b\ - пусто

ОС: win 10
selenide: 5.12.2

Похоже, это бага в селениде. Зарегайте issue га гитхабе: https://github.com/selenide/selenide/issues

P.S. Извращуги! Зачем же так называть файлы?

7 Симпатий

Хороший вопрос :thinking:

А мне нравится.
Следующий уровень - куча спецсимволов в названии файла :slight_smile:

Названия файлов формируются на основе введённых до этого пользователями значений. По бизнес логике в этих значениях часто встречаются кавычки)

issue завёл. Большое спасибо за ответ и за selenide в целом!

2 Симпатий

Вы пробовали экранировать кавычки обратным слешем?

Пример

\" файл с кавычками \"

Это нужно решать на уровне бэкенда, а не в тестах. Нужно удалять недопустимые символы, так как в названии файла не может быть двойных кавычек. Попробуйте на windows создать такой файл, и вы будете удивлены.

1 Симпатия

Это Билл будет удивлён :joy:

Я тут изучил вопрос подробнее - похоже, эта проблема есть только на винде. И Linux, и MacOS позволяют создавать файл, имя которых содержит кавычки и другие извращённые символы. Только слэш (и вроде pipe) запрещён.

А вот в Windows всё сложнее. Целую пачку символов нельзя использовать в имени файла.

В общем, запилили поддержку: https://github.com/selenide/selenide/pull/1199

2 Симпатий