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

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

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

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

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 подставить
файл сразу сохраняется без вызова диалогового окна

1 Симпатия

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

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