Всем привет! Пишу тест на проверку нахождения элементов на странице. Элементов около 20. Реализовала следующим способом, все работает, но хотелось бы услышать советов и критики. Лично меня смущает реализация d тесте метода siteSearchInput.
А зачем ты устанавливаешь неявное ожидание 2 раза? Сначала ты устанавливаешь ожидание 15 сек. потом создаешь объект класс HomePage, в который ты передаешь драйвер с ожиданием 15 сек. с конструктора HomePage по super ты переходишь в конструктор класса Page в котором ты устанавливаешь ожидание в 20 сек. вопрос зачем? Не понятно зачем определять поле driver в классе Tests, если она кроме метода getBrowser нигде не используется. Определять поля driver и homepage в классе HomePageTestCase1 статическими необязательно. Использовать скролл страницы до элемента тоже не обязательно браузер под selenium сам проскролит ее. А если по коду то как-то слишком запутано и такое чувство, что код писался в попыхах на коленке. И еще вопрос, при поиске других элементов вы учли, что они могут быть обнаружены при явных ожиданиях? И зачем проверять нахождение элемента, если что selenium кинет эксепшин, какой элемент не найден по какому пути.
Не пойму зачем везде в страницу передавать webdriver? Можно же в абстракнтой странице его присвоить, и не кидать каждый раз через конструкторы, меньше кода будет, и не нужно постоянно будет getWebDriver() вызывать, а сам драйвер инициализировать допустим в какой нибудь WebDriverFactory, где он будет синглтом и т.п.
По тесту, зачем писать реализацию find в странице? Напишите нормальный wrapper веб элемента, в котором будет метод isElementDisplayed(WebElement webElement) который будет возвращать webElement.isDisplayed(), вы что собираетесь для каждой страницы писать find метод? Зачем усложнять вещи.
Так же я бы вынес searchElement и openSite так же из абстрактой страницы, не думаю что страница может сама себя открыть, так же бы вынес это в отдельный класс, что то на подобие util класса, можете посмотреть как это реализовано в Selenide, класс так же называется Selenide.
Используйте Selenide вместо голого Selenium - ваш код сразу станет в тыщу раз короче и понятнее. Большинство описанных выше строк станут просто не нужны.