A declarative page object factory for selenium