Итак, у меня есть интересная головоломка, мне было любопытно получить отзывы от других архитекторов фреймворка Webdriver. В настоящее время я следую довольно стандартной модели выполнения:
- базовый объект
- pageobject (расширяет базовый объект)
- Junit testobject (ссылается на один или несколько объектов страницы)
В моих объектах страницы я решил определить сопоставления пользовательского интерфейса findBy как переменные и, в свою очередь, ссылаться на них в различных методах, которые я пишу для этого объекта страницы. Я считаю, что это работает очень хорошо. Тем не менее, один вопрос, над которым я размышляю, заключается в том, как обрабатывать дизайн методов для страниц (и их соответствующих объектов страницы), когда существует потенциально 50 отдельных гиперссылок.
Моя склонность и дизайн до сих пор состояли в том, чтобы создать методы (я думаю о них как о службах) для каждой ссылки на большинстве объектов страницы, которые я создал, чтобы @Test я мог просто вызвать метод, который я хочу, и покончить с ним. Это устраняет возможность проведения тестов... стандартная практика, которую я знаю. Но сейчас я пытаюсь решить... имеет ли смысл создавать 50 методов, по одному для каждой ссылки для объекта страницы, или я иду против своего желания и передаю текст ссылки из самого теста, вводя его в один метод, который создает findBy, используя переданный параметр.
С одной стороны, внутри pageobject намного меньше кода, но с другой стороны, тесты становятся более хрупкими. Эти ссылки могут быть ссылками в сотнях тестов.
Вот краткий пример моей модели:
classname extends baseobject{
By someLocator = By.linkText("some text");
By someOtherLocator = By.linkText("some other text");
By andAnotherLocator = By.id("someid");
public void someLinkMethod(){
driver.findElement(someLocator).click();
}
public void someOtherLinkMethod(){
driver.findElement(someOtherLocator).click();
}
public void someidMethod(){
driver.findElement(andAnotherLocator).click();
}
}
Таким образом, мы подошли к концу вопроса. Эта модель отлично подходит для тестового дизайна. Мои сервисы (методы) изолированы и легко обслуживаются. Но что бы я сделал, если бы для ссылок было 50 сопоставлений пользовательского интерфейса вместо 2, как я показал выше? Я играл со следующим дизайном, но мне он очень не нравится @Test:
public void selectFromLeftBar(String barItem){
driver.findElement(by.linkText(barItem)).click();
}
Любые мысли будут очень признательны!