Python Selenium Headless: abre el navegador Chrome en el modo Headless

Salman Mehmood 21 junio 2023
Python Selenium Headless: abre el navegador Chrome en el modo Headless

Este tutorial explica cómo podemos ejecutar nuestro navegador en modo headless con Selenium en Python.

Use Selenium en Python para ejecutar el navegador Chrome en modo sin cabeza

Para hablar sobre el navegador sin cabeza, también puede llamarlos navegador real, pero se ejecutan en segundo plano; no podrá verlos en ninguna parte, pero seguirán ejecutándose en segundo plano.

Habrá un par de escenarios en los que necesitará este navegador sin cabeza.

Porque cuando trabaja en el navegador normal, verá que aparece la interfaz de usuario y que opera otras aplicaciones mientras trabaja en un sistema local. Por lo tanto, no podrá realizar ninguna otra operación, lo que provocará que la operación adicional se ejecute frente a usted.

Suponga que ejecuta su script en modo sin cabeza. Para que pueda continuar con su trabajo, hay varios navegadores disponibles para usar un modo sin cabeza como phantomJS, HtmlUnit, y muchos más, consulte aquí.

También tenemos la opción headless con Chrome y Firefox. Para ver cómo puede ejecutar la prueba en modo autónomo en Selenium con Chrome, primero debemos crear un archivo de Python.

Saltaremos al código importando algunas clases y módulos requeridos.

import time
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

Acabamos de notar que webdriver.Chrom() tiene diferentes opciones, como puede ver a continuación.

python selenium headless open chrome browser en el modo headless - ejemplo uno

Usamos un argumento de servicio que debería iniciar la sesión de Chrome. El ChromeDriverManager() nos ayudará a descargar el controlador y configurar la ruta.

Usaremos el método get() y le pasaremos una URL donde intentaremos encontrar el cuadro de búsqueda, y luego usaremos algún texto aleatorio que queramos buscar usando find_element().

DV = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
DV.get("http://www.google.com")
DV.find_element(By.NAME, "q").send_keys("Elon Musk")

time.sleep(2)

Si ejecutamos el script de python, notará que no se ejecutará en el modo sin cabeza e irá al cuadro de búsqueda y buscará la consulta dada.

python selenium headless open chrome browser en el modo headless - salida uno

Ahora usaremos el segundo argumento llamado opciones, y necesitamos proporcionar opciones. Tenemos una clase de opciones de diferentes paquetes; puedes usarlo para Opera, Chrome y Firefox.

Como estamos usando Chrome, usaremos la clase Opciones() de Chrome.options. Así que crearemos un objeto llamado OP para llamar a la clase Opciones().

Hay dos opciones o diferentes formas de ejecutar su prueba en modo sin cabeza. Primero, debe usar el método add_argument() y pasar --headless dentro de él.

Para hacer este efecto, debemos pasar OP al parámetro opciones.

import time
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options

OP = Options()
OP.add_argument("--headless")

DV = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=OP)
DV.get("http://www.google.com")
DV.find_element(By.NAME, "q").send_keys("Elon Musk")

Cuando haya terminado, verá que la prueba se ejecutará en el modo sin cabeza y no podrá ver nada.

python selenium headless open chrome browser en el modo headless - salida uno

Para comprobar si se busca o no, capturaremos la captura de pantalla en el modo headless usando el método get_screenshot_as_file(). Abrirá un navegador en modo sin cabeza e inmediatamente tomará la captura de pantalla.

DV.get_screenshot_as_file(os.getcwd() + "/screenshot.png")

Ahora tenemos una captura de pantalla de lo que sucede en segundo plano.

python selenium headless open chrome browser en el modo headless - captura de pantalla uno

Suponga que usted es alguien que generalmente comete errores ortográficos y, a veces, es difícil recordar OP.add_argument('--headless'). Luego, también tenemos una opción más: propiedad de tipo llamada sin cabeza.

De forma predeterminada, está configurado como False, y puede cambiarlo a True, por lo que no necesita usar add_argument().

import time
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import os

OP = Options()
OP.headless = True
# OP.add_argument('--headless')

DV = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=OP)
DV.get("http://www.google.com")
# DV.find_element(By.NAME,'q').send_keys('Elon Musk')
DV.find_element(By.NAME, "q").send_keys("mark zuckerberg")
DV.get_screenshot_as_file(os.getcwd() + "/screenshot.png")

Después de volver a ejecutar este script, tenemos una captura de pantalla de la operación que se está realizando en segundo plano.

python selenium headless open chrome browser en el modo headless - captura de pantalla dos

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn