Python Selenium Headless: Öffnen Sie den Chrome-Browser im Headless-Modus

Salman Mehmood 15 Februar 2024
Python Selenium Headless: Öffnen Sie den Chrome-Browser im Headless-Modus

Dieses Tutorial erklärt, wie wir unseren Browser Headless-Modus mit Selenium in Python ausführen können.

Verwenden Sie Selenium in Python, um den Chrome-Browser im Headless-Modus auszuführen

Um über den Headless-Browser zu sprechen, kann man ihn auch einen echten Browser nennen, aber er läuft im Hintergrund; Sie werden sie nirgendwo sehen können, aber immer noch im Hintergrund laufen.

Es wird einige Szenarien geben, in denen Sie diesen Headless-Browser benötigen.

Denn wenn Sie im normalen Browser arbeiten, sehen Sie, wie die Benutzeroberfläche auftaucht und andere Anwendungen bedient, während Sie an einem lokalen System arbeiten. Sie können also keine andere Operation ausführen, die dazu führt, dass die zusätzliche Operation vor Ihnen ausgeführt wird.

Angenommen, Sie führen Ihr Skript im Headless-Modus aus. Damit Sie Ihre Arbeit fortsetzen können, stehen mehrere Browser zur Verfügung, die einen Headless-Modus verwenden können, wie phantomJS, HtmlUnit und viele mehr, siehe hier.

Wir haben auch die Headless-Option mit Chrome und Firefox. Um zu sehen, wie Sie den Test im Headless-Modus in Selenium mit Chrome ausführen können, müssen wir zunächst eine Python-Datei erstellen.

Wir springen in den Code, indem wir einige erforderliche Klassen und Module importieren.

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

Wir haben gerade festgestellt, dass webdriver.Chrom() verschiedene Optionen hat, wie Sie unten sehen können.

Python Selen Headless Open Chrome Browser im Headless-Modus – Beispiel eins

Wir haben ein Dienst-Argument verwendet, das die Chrome-Sitzung starten sollte. Der ChromeDriverManager() hilft uns, den Treiber herunterzuladen und den Pfad festzulegen.

Wir verwenden die Methode get() und übergeben ihr eine URL, wo wir versuchen, das Suchfeld zu finden, und dann verwenden wir einen zufälligen Text, den wir mit find_element() suchen möchten.

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)

Wenn wir das Python-Skript ausführen, werden Sie feststellen, dass es nicht im Headless-Modus ausgeführt wird, und zum Suchfeld gehen und die angegebene Abfrage durchsuchen.

Python Selen Headless Open Chrome Browser im Headless-Modus - Ausgabe eins

Jetzt verwenden wir das zweite Argument namens Optionen, und wir müssen Optionen angeben. Wir haben eine options-Klasse aus verschiedenen Paketen; Sie können es für Opera, Chrome und Firefox verwenden.

Da wir Chrome verwenden, verwenden wir die Klasse Options() aus Chrome.options. Also erstellen wir ein Objekt namens OP, um die Klasse Options() aufzurufen.

Es gibt zwei Optionen oder verschiedene Möglichkeiten, Ihren Test im Headless-Modus auszuführen. Zuerst müssen Sie die Methode add_argument() verwenden und darin --headless übergeben.

Um diesen Effekt zu erzielen, müssen wir OP an den Parameter Optionen übergeben.

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")

Wenn Sie fertig sind, sehen Sie, dass der Test im Headless-Modus ausgeführt wird und Sie nichts sehen können.

Python Selen Headless Open Chrome Browser im Headless-Modus - Ausgabe eins

Um zu überprüfen, ob gesucht wird oder nicht, erfassen wir den Screenshot im Headless-Modus mit der Methode get_screenshot_as_file(). Es öffnet einen Browser im Headless-Modus und nimmt sofort den Screenshot auf.

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

Jetzt haben wir einen Screenshot von dem, was im Hintergrund passiert.

Python Selenium Headless Open Chrome Browser im Headless-Modus – Screenshot eins

Angenommen, Sie sind jemand, der im Allgemeinen Rechtschreibfehler macht, und manchmal ist es schwierig, sich OP.add_argument('--headless') zu merken. Dann haben wir noch eine weitere Option: Geben Sie die Eigenschaft namens headless ein.

Standardmäßig ist es auf False gesetzt, und Sie können es auf True ändern, sodass Sie add_argument() nicht verwenden müssen.

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")

Nachdem wir dieses Skript erneut ausgeführt haben, haben wir einen Screenshot davon, welche Operation im Hintergrund ausgeführt wird.

Python Selenium Headless Open Chrome Browser im Headless-Modus – Screenshot zwei

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