jeudi 13 août 2015

I use Selenium Webdriver a lot, and there are a lot of "utility" methods I've written to make it easier for me to use. I put these classes in a WebDriverUtil class, and now that file is over 1,200 lines long. Every method in WebDriverUtil attempts to separate me from using WebDriver because it's something I use a lot that wouldn't be DRY to keep writing.

For example, this is a method I would put in WebDriverUtil.

public void waitUntilVisible(final WebElement webElement) {
    new WebDriverWait(webDriver, 10).until(new Predicate<WebDriver>() {
        @Override
        public boolean apply(WebDriver webDriver) {
            return webElement.isDisplayed();
        }
    });
}

If I have 1,200 lines of code full of methods like this, do I have a God object? If so, how could I fix it?

Should I separate my behavior into decorator classes like this?

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
}

Aucun commentaire:

Enregistrer un commentaire