Я использую Selenium Webdriver a lot, и есть много методов «полезности», которые я написал, чтобы облегчить мне использование. Я помещаю эти классы в класс WebDriverUtil
, и теперь этот файл имеет длину более 1 200 строк. Каждый метод в WebDriverUtil
пытается отделить меня от использования WebDriver
, потому что это то, что я использую много, чтобы не было DRY, чтобы продолжать писать.<SomeThirdPartyClass> Util == Объект God?
Например, это метод, который я бы поставил в WebDriverUtil
.
public void waitUntilVisible(final WebElement webElement) {
new WebDriverWait(webDriver, 10).until(new Predicate<WebDriver>() {
@Override
public boolean apply(WebDriver webDriver) {
return webElement.isDisplayed();
}
});
}
Если у меня есть 1200 строк кода, полный методов, как это, у меня есть God object? Если да, то как я могу это исправить?
Должен ли я отделить свое поведение от классов декоратора, как это?
public class WebElementDecorator implements WebElement {
private WebElement webElement;
private final WebDriver webDriver;
public WebElementDecorator(WebElement webElement, WebDriver webDriver) {
this.webElement = webElement;
this.webDriver = webDriver;
}
public void waitUntilVisible() {
new WebDriverWait(webDriver, 10).until(new Predicate<WebDriver>() {
@Override
public boolean apply(WebDriver webDriver) {
return webElement.isDisplayed();
}
});
}
public void click() {
webElement.click();
}
//... other WebElement methods
}
Почему бы не сделать метод 'static'? Это зависит от любого состояния класса Util? –
@ElliottFrisch Сделать статичным в утилите или в декораторе? – michaelsnowden