| #!/usr/bin/env python |
| |
| |
| 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]() |