class WebDriver(RemoteWebDriver): """The main interface to use for testing, which represents an idealised web browser.""" def __init__(self, profile=None, timeout=30): """Creates a webdriver instance. Args: profile: a FirefoxProfile object (it can also be a profile name, but the support for that may be removed in future, it is recommended to pass in a FirefoxProfile object) timeout: the amount of time to wait for extension socket """ port = self._free_port() self.browser = FirefoxLauncher() if type(profile) == str: # This is to be Backward compatible because we used to take a # profile name profile = FirefoxProfile(name=profile, port=port) if not profile: profile = FirefoxProfile(port=port) self.browser.launch_browser(profile) RemoteWebDriver.__init__(self, command_executor=ExtensionConnection(timeout), desired_capabilities=DesiredCapabilities.FIREFOX) def _free_port(self): port = 0 free_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) free_socket.bind((socket.gethostname(), 0)) port = free_socket.getsockname()[1] free_socket.close() return port def _execute(self, command, params=None): try: return RemoteWebDriver.execute(self, command, params) except ErrorInResponseException, e: # Legacy behavior: calling close() multiple times should not raise # an error if command != Command.CLOSE and command != Command.QUIT: raise e except urllib2.URLError, e: # Legacy behavior: calling quit() multiple times should not raise # an error if command != Command.QUIT: raise e
def __init__(self, profile=None, timeout=30): """Creates a webdriver instance. Args: profile: a FirefoxProfile object (it can also be a profile name, but the support for that may be removed in future, it is recommended to pass in a FirefoxProfile object) timeout: the amount of time to wait for extension socket """ port = self._free_port() self.browser = FirefoxLauncher() if type(profile) == str: # This is to be Backward compatible because we used to take a # profile name profile = FirefoxProfile(name=profile, port=port) if not profile: profile = FirefoxProfile(port=port) self.browser.launch_browser(profile) RemoteWebDriver.__init__(self, command_executor=ExtensionConnection(timeout), desired_capabilities=DesiredCapabilities.FIREFOX)