Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Нативное окно браузера


(Андрій Мартинюк) #1

Тестирую експорт csv файла, при нажатии кнопки start export открывается нативное окно браузера где нужно указать путь сохранения файла, как можно сохранить файл средствами codeception?


(Sergey Korol) #2

Может нативное окно OS? Вряд ли codeception тут чем-то отличается от прочих похожих инструментов (поправьте, если не прав), так что велика вероятность, что встроенными средствами - никак. Смотрите в сторону эмуляции нажатий клавиш при помощи host language, либо external tools: AutoIT, SikuliX, etc. Но тут надо еще понимать, что из коробки ни один из вариантов не сможет решить эту задачу удаленно. Так что в случае remote execution, придется изобретать свой велосипед. Либо, если знаете end point сервиса, отдающего файл, можете дернуть его напрямую. Но это уже будет чит, противоречащий действиям реального юзера.


(Jane Tymoschuk) #3

firefox

FirefoxProfile ffProfile = new FirefoxProfile();
ffProfile.setPreference("browser.download.dir", exportDirPath);
ffProfile.setPreference("browser.download.folderList", 2);
ffProfile.setPreference("browser.download.manager.closeWhenDone", true);
ffProfile.setPreference("browser.helperApps.neverAsk.saveToDisk",
"application/pdf, image/png, application/vnd.ms-excel, application/octet-stream, application/csv");
new FirefoxDriver(ffProfile)

chrome

              DesiredCapabilities capabilities = DesiredCapabilities.chrome();
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<>();
prefs.put("profile.default_content_settings.popups", 0);
prefs.put("download.directory_upgrade", true);
prefs.put("prompt_for_download", false);
prefs.put("download.prompt_for_download", false);
prefs.put("download.extensions_to_open", "");
prefs.put("default_directory", exportDirPath);
prefs.put("download.default_directory", exportDirPath);
prefs.put("savefile.default_directory", exportDirPath);
options.setExperimentalOptions("prefs", prefs); 
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
new ChromeDriver(capabilities)

остается только для фаерфокса нужные mime-type подставить
файл сразу сохраняется без вызова диалогового окна


(Sergey Korol) #4

А для каких версий браузера это работает?


(Jane Tymoschuk) #5

ох, выше 29 не пробовала для фаерфокса, а для хрома с последней все ок