Usando Extensiones con Selenium (Python)

Actualmente estoy usando Selenium para ejecutar instancias de Chrome para probar páginas web. Cada vez que se ejecuta mi script, se inicia una instancia limpia de Chrome (sin extensiones, marcadores, historial de navegación, etc.). Me preguntaba si es posible ejecutar mi script con extensiones de Chrome. He intentado buscar un ejemplo de Python, pero no surgió nada cuando busqué en Google.

Related of "Usando Extensiones con Selenium (Python)"

Debe usar las opciones de Chrome Webdriver para establecer una lista de extensiones para cargar. Aquí hay un ejemplo:

import os from selenium import webdriver from selenium.webdriver.chrome.options import Options executable_path = "path_to_webdriver" os.environ["webdriver.chrome.driver"] = executable_path chrome_options = Options() chrome_options.add_extension('path_to_extension') driver = webdriver.Chrome(executable_path=executable_path, chrome_options=chrome_options) driver.get("http://stackoverflow.com") driver.quit() 

Espero que ayude.

La respuesta principal no funcionó para mí porque no me di cuenta de que tenía que apuntar las opciones del controlador web hacia un archivo .zip .

Es decir, chrome_options.add_extension('path_to_extension_dir') no funciona.
Necesita: chrome_options.add_extension('path_to_extension_dir.zip')

Después de descubrirlo y leer un par de publicaciones sobre cómo crear el archivo zip a través de la línea de comandos y cargarlo en selenium , la única forma en que funcionó fue comprimir mis archivos de extensión dentro del mismo script de Python. Esto resultó ser una buena forma de actualizar automáticamente cualquier cambio que haya realizado en su extensión:

 import os, zipfile from selenium import webdriver # Configure filepaths chrome_exe = "path/to/chromedriver.exe" ext_dir = 'extension' ext_file = 'extension.zip' # Create zipped extension ## Read in your extension files file_names = os.listdir(ext_dir) file_dict = {} for fn in file_names: with open(os.path.join(ext_dir, fn), 'r') as infile: file_dict[fn] = infile.read() ## Save files to zipped archive with zipfile.ZipFile(ext_file), 'w') as zf: for fn, content in file_dict.iteritems(): zf.writestr(fn, content) # Add extension chrome_options = webdriver.ChromeOptions() chrome_options.add_extension(ext_file) # Start driver driver = webdriver.Chrome(executable_path=chrome_exe, chrome_options=chrome_options) driver.get("http://stackoverflow.com") driver.quit()