【发布时间】:2015-11-07 04:12:34
【问题描述】:
我使用Selenium Webdriver a lot,并且我编写了很多“实用”方法以使其更易于使用。我将这些类放在WebDriverUtil 类中,现在该文件的长度超过了 1,200 行。 WebDriverUtil 中的每个方法都试图将我与使用 WebDriver 分开,因为这是我经常使用的东西,而不是 DRY 继续写作。
例如,这是我将在WebDriverUtil 中输入的方法。
public void waitUntilVisible(final WebElement webElement) {
new WebDriverWait(webDriver, 10).until(new Predicate<WebDriver>() {
@Override
public boolean apply(WebDriver webDriver) {
return webElement.isDisplayed();
}
});
}
如果我有 1,200 行代码中充满了这样的方法,我有 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 在实用程序或装饰器中使其成为静态?
标签: java selenium design-patterns decorator god-object