class BrowserDriverFactory(object): | |
browser_drivers = {} | |
platforms = set() | |
browsers = set() | |
@classmethod | |
def available_platforms(cls): | |
return list(cls.platforms) | |
@classmethod | |
def available_browsers(cls): | |
return list(cls.browsers) | |
@classmethod | |
def add_browser_driver(cls, platform, browser_name, browser_driver_class): | |
cls.platforms.add(platform) | |
cls.browsers.add(browser_name) | |
if platform not in cls.browser_drivers: | |
cls.browser_drivers[platform] = {} | |
cls.browser_drivers[platform][browser_name] = browser_driver_class | |
@classmethod | |
def create(cls, platform, browser_name): | |
if browser_name not in cls.browser_drivers[platform]: | |
raise ValueError("Browser \"%s\" is not available on platform \"%s\"" % (browser_name, platform)) | |
return cls.browser_drivers[platform][browser_name]() |