Funktionen und Chrome-Optionen

Funktionen sind Optionen, mit denen Sie eine ChromeDriver-Sitzung anpassen und konfigurieren können. Auf dieser Seite werden alle von ChromeDriver unterstützten Funktionen und deren Verwendung beschrieben.

Die WebDriver Language APIs bieten Möglichkeiten, Funktionen an ChromeDriver zu übergeben. Der genaue Mechanismus unterscheidet sich je nach Sprache, aber die meisten Sprachen nutzen eine oder beide der folgenden Mechanismen:

  1. Verwenden Sie die Klasse ChromeOptions. Dies wird von Java, Python usw. unterstützt.
  2. Verwenden Sie die Klasse DesiredCapabilities. Dies wird von Python, Ruby usw. unterstützt. Obwohl es auch in Java verfügbar ist, wurde seine Verwendung in Java verworfen.

ChromeOptions-Klasse verwenden

Sie können eine Instanz von ChromeOptions erstellen, die praktische Methoden zum Festlegen von ChromeDriver-spezifischen Funktionen bietet. Anschließend können Sie das ChromeOptions-Objekt an den ChromeDriver-Konstruktor übergeben:

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

Seit Selenium Version 3.6.0 implementiert die ChromeOptions-Klasse in Java auch die Capabilities-Schnittstelle, sodass Sie andere WebDriver-Funktionen angeben können, die nicht nur für ChromeDriver spezifisch sind.

ChromeOptions options = new ChromeOptions();

// Add the WebDriver proxy capability.
Proxy proxy = new Proxy();
proxy.setHttpProxy("myhttpproxy:3337");
options.setCapability("proxy", proxy);

// Add a ChromeDriver-specific capability.
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

DesiredCapabilities verwenden

Um DesiredCapabilities verwenden zu können, müssen Sie den Namen der Funktion und den Typ des erforderlichen Werts kennen. Die vollständige Liste finden Sie hier.

Python

caps = webdriver.DesiredCapabilities.CHROME.copy() 
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)

Ruby

caps = Selenium::WebDriver::Remote::Capabilities.chrome(
     "goog:chromeOptions" => {"args" => [ "window-size=1000,800" ]})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps

Gängige Anwendungsfälle

Benutzerdefiniertes Profil verwenden (auch Nutzerdatenverzeichnis genannt)

Standardmäßig erstellt ChromeDriver für jede Sitzung ein neues temporäres Profil. Gelegentlich möchten Sie vielleicht spezielle Einstellungen festlegen oder einfach ein benutzerdefiniertes Profil verwenden. Ist dies der Fall, können Sie mit der Funktion „chrome.prefs“ (unten beschrieben) Einstellungen festlegen, die nach dem Start von Chrome angewendet werden. Falls Letzteres aktiviert ist, können Sie Chrome über die Chrome-Befehlszeile user-data-dir mitteilen, welches Profil verwendet werden soll:

ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");

Sie können Ihr eigenes benutzerdefiniertes Profil erstellen, indem Sie Chrome über die Befehlszeile oder über ChromeDriver ausführen und dabei den Schalter user-data-dir auf ein neues Verzeichnis stellen. Wenn der Pfad nicht vorhanden ist, erstellt Chrome am angegebenen Speicherort ein neues Profil. Sie können die Profileinstellungen dann nach Bedarf ändern und ChromeDriver kann das Profil zukünftig verwenden. Öffnen Sie im Browser chrome://version, um zu sehen, welches Profil von Chrome verwendet wird.

Chrome maximiert starten

ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");

Verwendung einer ausführbaren Chrome-Datei an einem nicht standardmäßigen Speicherort

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

Dialogfenster blockieren

ChromeDriver konfiguriert Chrome standardmäßig so, dass Pop-up-Fenster zugelassen werden. Wenn Sie Pop-ups blockieren möchten, also das normale Verhalten von Chrome wiederherstellen möchten, wenn es nicht von ChromeDriver gesteuert wird, gehen Sie wie folgt vor:

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
     Arrays.asList("disable-popup-blocking"));

Downloadverzeichnis festlegen

Mit dem folgenden Code kann Chrome so konfiguriert werden, dass Dateien in ein bestimmtes Verzeichnis heruntergeladen werden. Es gibt jedoch einige Einschränkungen, die Sie beachten sollten:

  • Chrome lässt die Verwendung bestimmter Verzeichnisse zum Herunterladen nicht zu. Insbesondere können Sie den Desktopordner nicht als Downloadverzeichnis verwenden. Unter Linux können Sie das Basisverzeichnis auch nicht für den Download verwenden. Da sich die genaue Liste der unzulässigen Verzeichnisse ändern kann, wird empfohlen, ein Verzeichnis zu verwenden, das für das System keine besondere Bedeutung hat.
  • ChromeDriver wartet nicht automatisch, bis der Download abgeschlossen ist. Wenn Sie „driver.quit()“ zu früh aufrufen, wird Chrome möglicherweise beendet, bevor der Download abgeschlossen ist.
  • Relative Pfade funktionieren nicht immer. Die besten Ergebnisse erzielen Sie, wenn Sie stattdessen den vollständigen Pfad verwenden.
  • Verwenden Sie unter Windows „“ als Trennzeichen für Pfade. Die Verwendung von "/" funktioniert unter Windows nicht zuverlässig.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

Anerkannte Funktionen

In der Selenium-Dokumentation und im W3C WebDriver-Standard finden Sie Informationen zu den von ChromeDriver akzeptierten Standardfunktionen. Hier sind nur Chrome-spezifische Funktionen aufgeführt.

ChromeOptions Objekt

Die meisten Chrome-spezifischen Funktionen werden über das ChromeOptions-Objekt bereitgestellt. In einigen Sprachen wird dies von der Klasse ChromeOptions implementiert. In anderen Sprachen werden sie in den gewünschten Funktionen im Wörterbuch goog:chromeOptions gespeichert.

Name Typ Standard  Beschreibung 
args  Liste der Strings   Liste der Befehlszeilenargumente, die beim Start von Chrome verwendet werden sollen. Argumente mit einem verknüpften Wert müssen durch ein „=“-Zeichen getrennt werden (z.B. ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Hier finden Sie eine Liste der Chrome-Argumente.
binary String   Pfad zur ausführbaren Chrome-Datei. Unter Mac OS X sollte dies das tatsächliche Binärprogramm und nicht nur die App sein. Beispiel: /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
extensions Liste der Strings   Eine Liste der Chrome-Erweiterungen, die beim Start installiert werden sollen. Jeder Eintrag in der Liste muss eine base-64-codierte gepackte Chrome-Erweiterung (.crx) sein
localState wörterbuch   Ein Wörterbuch, bei dem jeder Eintrag aus dem Namen der Einstellung und ihrem Wert besteht. Diese Einstellungen werden auf die lokale Statusdatei im Ordner mit den Nutzerdaten angewendet.
prefs wörterbuch   Ein Wörterbuch, bei dem jeder Eintrag aus dem Namen der Einstellung und ihrem Wert besteht. Diese Einstellungen werden nur auf das verwendete Nutzerprofil angewendet. Beispiele finden Sie in der Datei "Preferences" im Nutzerdatenverzeichnis von Chrome.
detach boolean Falsch Bei "false" wird Chrome beim Beenden von ChromeDriver unabhängig davon, ob die Sitzung beendet wird, beendet. Bei Einstellung auf "true" wird Chrome nur beim Beenden der Sitzung beendet. Hinweis: Wenn der Wert auf „true“ gesetzt ist und die Sitzung nicht beendet wird, kann ChromeDriver das temporäre Nutzerdatenverzeichnis, das die ausgeführte Chrome-Instanz verwendet, nicht bereinigen.
debuggerAddress String
Die Adresse eines Chrome-Debugger-Servers, zu dem eine Verbindung hergestellt werden soll, im Format <hostname/ip:port>, z.B. „127.0.0.1:38947“
excludeSwitches Liste der Strings   Liste der Schalter für die Chrome-Befehlszeile, mit der ausgeschlossen wird, dass ChromeDriver beim Start von Chrome standardmäßig übergibt. Stellen Sie Schaltern kein „--“ voran.
minidumpPath  String   Verzeichnis zum Speichern von Chrome-Minidumps Diese Option wird nur unter Linux unterstützt.
mobileEmulation wörterbuch   Ein Wörterbuch mit einem Wert für „deviceName“ oder Werten für „deviceMetrics“ und „userAgent“. Weitere Informationen finden Sie unter Mobile Emulation.
perfLoggingPrefs wörterbuch   Ein optionales Wörterbuch, das Einstellungen für die Leistungsprotokollierung angibt. Weitere Informationen hierzu finden Sie unten.
windowTypes Liste der Strings   Eine Liste der Fenstertypen, die in der Liste der Fensterziehpunkte angezeigt werden. Für den Zugriff auf <webview>-Elemente muss „webview“ in diese Liste aufgenommen werden.

perfLoggingPrefs Objekt

Das Wörterbuch „perfLoggingPrefs“ hat das folgende Format (alle Schlüssel sind optional):

Name Typ Standard Beschreibung
enableNetwork boolean true Gibt an, ob Ereignisse aus der Netzwerkdomain erfasst werden sollen.
enablePage boolean true Gibt an, ob Ereignisse aus der Seitendomain erfasst werden.
traceCategories String (leer) Ein durch Kommas getrennter String von Chrome-Tracing-Kategorien, für die Trace-Ereignisse erfasst werden sollen. Durch einen nicht angegebenen oder leeren String wird das Tracing deaktiviert.
bufferUsageReportingInterval positive Ganzzahl 1000 Die angeforderte Anzahl von Millisekunden zwischen Nutzungsereignissen des Trace-Zwischenspeichers in den Entwicklertools. Bei 1.000 und einmal pro Sekunde meldet DevTools, wie voll der Trace-Zwischenspeicher ist. Wenn ein Bericht darauf hinweist, dass die Puffernutzung 100 % beträgt, wird eine Warnung ausgegeben.

Zurückgegebene Funktionen

Dies ist eine Liste aller für Chrome zurückgegebenen Funktionen. (d.h. was ChromeDriver zurückgibt, wenn Sie eine neue Sitzung erstellen)

Name Typ  Beschreibung 
chrome.chromedriverVersion String ChromeDriver-Version
userDataDir String Pfad zum Nutzerdatenverzeichnis, das Chrome verwendet. Hinweis: Diese befindet sich in einem „Chrome“-Wörterbuch.