def log_wrapper(wrapped, instance, args, kwargs): instance.logger.debug("{}({}) [ENTERING]".format( wrapped.__name__, ", ".join([argstr(args), kwargstr(kwargs)]))) ret = wrapped(*args, **kwargs) instance.logger.debug("{}() [LEAVING]".format(wrapped.__name__)) return ret
def __init__(self, *args, options=None, **kwargs): self.logger = get_logger("SeleniumProxy") self.logger.info("ChromeDriver __init__") self.logger.info("options {} {} {}".format(options, argstr(args), kwargstr(kwargs))) if options is None: options = {} self._client = AdminClient() addr, port = self._client.create_proxy(port=options.pop('port', 0), proxy_config=options.pop( 'proxy', None), options=options) if 'port' not in options: # Auto config mode try: capabilities = kwargs.pop('desired_capabilities') except KeyError: capabilities = DesiredCapabilities.CHROME.copy() capabilities['proxy'] = { 'proxyType': 'manual', 'httpProxy': '{}:{}'.format(addr, port), 'sslProxy': '{}:{}'.format(addr, port), 'noProxy': '' } capabilities['acceptInsecureCerts'] = True kwargs['desired_capabilities'] = capabilities super().__init__(*args, **kwargs)