def _process_chrome_options(self, opts): if isinstance(opts, ChromeOptions): options = opts else: options = ChromeOptions() if 'args' in opts: for arg in opts.pop('args'): options.add_argument(arg) if opts.pop('headless', None) or self.options.pop( 'headless', None): options.headless = True if 'binary' in opts or 'binary_location' in opts: options.binary_location = opts.pop('binary') or opts.pop( 'binary_location') if 'debugger_address' in opts: options.debugger_address = opts.pop('debugger_address') if 'extensions' in opts: for path in opts.pop('extensions'): options.add_extension(path) if 'encoded_extensions' in opts: for string in opts.pop('encoded_extensions'): options.add_encoded_extension(string) if 'experimental_options' in opts: for name, value in opts.pop('experimental_options').items(): options.add_experimental_option(name, value) self.selenium_opts['options'] = options
def _browser_options(self, option_instance: webdriver.ChromeOptions, options_config: dict): # 添加浏览器配置、扩展、实验性质参数等 """ 如果options_config内有值就添加配置: add_argument add_experimental_option add_encoded_extension add_extension :param option_instance: :param options_config: :return: """ # todo: add_argument 设置浏览器启动语言、隐藏自动化测试提示不生效 # todo: 可能是zh_CN 下次尝试一下下划线 options_initial: dict = options_config.pop('options') if options_initial: argument = options_initial.get("add_argument") experimental = options_initial.get("add_experimental_option") encoded = options_initial.get("add_encoded_extension") extension = options_initial.get("add_extension") if argument and len(argument) > 0: for arg in argument: option_instance.add_argument(arg) if experimental and len(experimental) > 0: for exper in experimental: option_instance.add_experimental_option(*exper) if encoded and len(encoded) > 0: for encod in encoded: option_instance.add_encoded_extension(encod) if extension and len(extension) > 0: for exten in extension: option_instance.add_extension(exten) return option_instance