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.
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.
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.
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.
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.
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