Пытаюсь сделать переход от низкоуровневого кода к высокоуровнему.
Пока мои тесты это длинные нечитаемые простыни. В связи с этим вопросы возникают, как лучше сделать я пока не знаю, более опытные в этом деле, надеюсь, помогут.
Есть у меня три кнопки в разных местах приложения
driver.findElement(By.xpath("//div[@id=\"tab_1\"]//button[@id=\"btn_add\"]")).click();
driver.findElement(By.xpath("//div[@id=\"tab_2\"]//button[@id=\"btn_add\"]")).click();
driver.findElement(By.xpath("//div[@id=\"tab_3\"]//button[@id=\"btn_add\"]")).click();
Это абсолютно одинаковые кнопки “Добавить”, просто на разных вкладках.
Как правильнее делать, три разных метода или один метод и разные локаторы для него?
Так
clickDayTabButton();
clickEvnTabButton();
clickPartTabButton();
Или так
clickTabButton(locator);
Я думаю, что правильнее второй вариант, зачем плодить почти одинаковые методы, но могу ошибаться и это аукнется чем-нибудь нехорошим в будущем
Еще если я делаю вторым вариантом, то в тестовом классе появляется этот самый локатор, что не совсем красиво и, скорее всего, неправильно, потому что не должно быть признаков кода, только логика
Вот о чем я, например, тестовый класс
public class AddApplicantDay{
@Test
clickTabButton("//div[@id=\"tab_1\"]//button[@id=\"btn_add\"]
И общий суперкласс
public class TestBase {
clickTabButton(locator);
Если я все делаю правильно, то как спрятать этот локатор в виде кода в тестовом классе, когда делаю Refactor -> Introduce Parametr
, то локатор пропадает и я его не могу отыскать (