Дорый день! У меня есть тестовое задание. Кейс сбора данных:
Данные спарсил с помощью selenide(selenium).
Подскажите какую структуру(архитектуру) классов применить ?
Проект java. https://github.com/genabitgit/ParseData
Сейчас структура такая:
public class Main {
public static void main(String[] args) throws IOException {
ExcelDataConfig excelDataConfig = new ExcelDataConfig();
SetUpBrowser browser = new SetUpBrowser();
String startDataFrom = excelDataConfig.getData(0, 0);
String startDataTo = excelDataConfig.getData(0, 1);
String endDataFrom = excelDataConfig.getData(1, 0);
String endDataTo = excelDataConfig.getData(1, 1);
browser.startBrowser();
var searchPage = browser.openSearchPage();
//submit search request
searchPage.entersTheStartDateOfPublication(startDataFrom, startDataTo);
searchPage.entersTheEndDateOfPublication(endDataFrom, endDataTo);
searchPage.pressShowButton();
searchPage.pressAllButton();
searchPage.pressDisplayTypeRow();
//store results
var pagesCount = searchPage.getPagesCount();
for (int i = 2; i < pagesCount; i++) {
var result = searchPage.showResultsPage(i);
}
searchPage.saveReport();
}
}
В твоём случае ExcelDataConfig и SetUpBrowser могут иметь статические методы и экземпляры создавать вообще не надо.
Вот если, например ты в них будешь передавать какое-то состояние, например, путь к файлу настроек и URL страницы, то твой подход имеет смысл.
И мне не нравится SearchPage - ты нигде не используешь url. По-идее, методы этого класса тоже можно сделать статическими и обращаться напрямую, например: SearchPage.pressAllButton();
Ещё. SetUpBrowser и SearchPage возможно стоит объединить вместе. Например, как SearchPage. Этот код будет статическим блоком:
static {
Configuration.browser = "firefox";
Configuration.startMaximized = true;
clearBrowserCache();
}
Ещё. В пакетах не принято использовать большие буквы. Например, config, page, report.
Вообще, в рамках такого проекта об архитектуре можно сильно не грустить.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей