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 ihre Verwendung dokumentiert.

Mit den Sprach-APIs von WebDriver können Sie Funktionen an ChromeDriver übergeben. Der genaue Mechanismus unterscheidet sich je nach Sprache, aber die meisten Sprachen verwenden einen 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. Sie ist zwar auch in Java verfügbar, wurde jedoch in Java nicht mehr unterstützt.

ChromeOptions-Klasse verwenden

Sie können eine Instanz von ChromeOptions erstellen. Dort finden Sie praktische Methoden, um ChromeDriver-spezifische Funktionen festzulegen. Sie können dann die ChromeOptions in den ChromeDriver-Konstruktor übertragen:

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 du andere WebDriver-Funktionen angeben kannst, die nicht speziell für ChromeDriver 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

Wenn Sie DesiredCapabilities verwenden möchten, müssen Sie den Namen der Capability und den erforderlichen Werttyp kennen. Die vollständige Liste findest du 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 als Nutzerdatenverzeichnis bezeichnet)

ChromeDriver erstellt standardmäßig für jede Sitzung ein neues temporäres Profil. Manchmal möchten Sie vielleicht spezielle Einstellungen festlegen oder einfach nur ein benutzerdefiniertes Profil verwenden. Wenn Ersterer zutrifft, können Sie die Datei „chrome.prefs“ (wird weiter unten beschrieben), um Einstellungen festzulegen, die nach dem Start von Chrome angewendet werden. Wenn Letzteres der Fall ist, können Sie Chrome über die user-data-dir-Befehlszeile 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 einfach über die Befehlszeile oder über ChromeDriver ausführen und dabei den Schalter user-data-dir auf ein neues Verzeichnis einstellen. Wenn der Pfad nicht vorhanden ist, erstellt Chrome am angegebenen Speicherort ein neues Profil. Anschließend können Sie die Profileinstellungen nach Bedarf ändern und ChromeDriver kann das Profil in Zukunft verwenden. Öffnen Sie chrome://version im Browser, um zu sehen, welches Profil Chrome verwendet.

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 Chrome-Verhalten wiederherstellen möchten, wenn es nicht von ChromeDriver gesteuert wird, gehen Sie so vor:

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

Downloadverzeichnis festlegen

Mit dem folgenden Code können Sie Chrome so konfigurieren, dass Dateien in ein bestimmtes Verzeichnis heruntergeladen werden. Es sind jedoch einige Einschränkungen zu beachten:

  • Chrome unterbindet die Verwendung bestimmter Verzeichnisse zum Herunterladen. Insbesondere darf der Desktop-Ordner nicht als Downloadverzeichnis verwendet werden. Unter Linux können Sie auch das Basisverzeichnis nicht für den Download verwenden. Da die genaue Liste unzulässiger Verzeichnisse noch geändert werden kann, empfiehlt es sich, ein Verzeichnis zu verwenden, das für das System keine besondere Bedeutung hat.
  • ChromeDriver wartet nicht automatisch auf den Abschluss des Downloads. Wenn Sie drive.quit() zu früh aufrufen, wird Chrome möglicherweise beendet, bevor der Download abgeschlossen ist.
  • Relative Pfade funktionieren nicht immer. Verwenden Sie stattdessen den vollständigen Pfad, um ein optimales Ergebnis zu erzielen.
  • Verwenden Sie unter Windows "" als Pfadtrennzeichen verwendet. "/" verwenden ist 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);

Erkannte Funktionen

Entsprechende Informationen finden Sie in der Selenium-Dokumentation und im W3C WebDriver-Standard. die von ChromeDriver akzeptiert werden. Hier sind nur Chrome-spezifische Funktionen.

ChromeOptions Objekt

Die meisten Chrome-spezifischen Funktionen werden über die ChromeOptions bereitgestellt. -Objekt enthält. In einigen Sprachen wird dies durch die Klasse ChromeOptions implementiert. In anderen Sprachen werden sie im Wörterbuch goog:chromeOptions gespeichert in die gewünschten Funktionen bieten.

Name Typ Standard  Beschreibung 
args  Liste mit Strings   Liste der Befehlszeilenargumente, die beim Starten von Chrome verwendet werden sollen. Argumente mit einem verknüpften Wert müssen durch „=“ getrennt werden. (z.B. ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Weitere Informationen finden Sie unter hier finden Sie eine Liste mit Chrome-Argumenten.
binary String   Pfad zur ausführbaren Chrome-Datei, die verwendet werden soll. Unter Mac OS X sollte dies das tatsächliche Binärprogramm und nicht nur die App sein, z. B. „/Anwendungen/Google Chrome.app/Contents/MacOS/Google Chrome“.
extensions Liste mit Strings   Eine Liste der Chrome-Erweiterungen, die beim Start installiert werden sollen. Jeder Eintrag in der Liste muss eine base-64-codierte Chrome-Erweiterung (.crx) sein.
localState wörterbuch   Ein Wörterbuch mit jedem Eintrag, der aus dem Namen der Einstellung und ihrem Wert besteht. Diese Einstellungen werden auf die Datei „Lokaler Status“ im Ordner mit den Nutzerdaten angewendet.
prefs wörterbuch   Ein Wörterbuch mit jedem Eintrag, der aus dem Namen der Einstellung und ihrem Wert besteht. Diese Einstellungen werden nur auf das verwendete Nutzerprofil angewendet. Siehe "Einstellungen" im Nutzerdatenverzeichnis von Chrome.
detach boolean falsch Bei "false" wird Chrome beim Beenden von ChromeDriver beendet, unabhängig davon, ob die Sitzung beendet wird. Falls wahr, wird Chrome nur dann beendet, wenn die Sitzung beendet (oder geschlossen) wird. Hinweis: Wenn der Wert auf „true“ gesetzt 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 der eine Verbindung hergestellt werden soll, im Format <hostname/ip:port>, z.B. „127.0.0.1:38947“
excludeSwitches Liste mit Strings   Liste der Chrome-Befehlszeilensteuerelemente, mit denen ausgeschlossen werden soll, dass ChromeDriver beim Starten von Chrome standardmäßig übergeht. 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 entweder 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 mit Strings   Eine Liste der Fenstertypen, die in der Liste der Fensterziehpunkte angezeigt werden. Für Zugriff auf <webview> Elemente, einschließlich „webview“ in dieser Liste.

perfLoggingPrefs Objekt

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

Name Typ Standardeinstellung Beschreibung
enableNetwork boolean wahr Gibt an, ob Ereignisse aus der Netzwerkdomain erfasst werden sollen.
enablePage boolean wahr Gibt an, ob Ereignisse aus der Seitendomain erfasst werden sollen.
traceCategories String (leer) Ein durch Kommas getrennter String der Chrome-Tracingkategorien, für die Trace-Ereignisse erfasst werden sollen. Ein nicht spezifizierter oder leerer String deaktiviert das Tracing.
bufferUsageReportingInterval positive Ganzzahl 1000 Die angeforderte Anzahl von Millisekunden zwischen den Nutzungsereignissen des Trace-Zwischenspeichers in den Entwicklertools. Bei 1.000 wird einmal pro Sekunde in den Entwicklertools gemeldet, wie voll der Trace-Zwischenspeicher ist. Wenn in einem Bericht angegeben ist, dass die Puffernutzung 100 % beträgt, wird eine Warnung ausgegeben.

Zurückgegebene Funktionen

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

Name Typ  Beschreibung 
chrome.chromedriverVersion String Version von ChromeDriver
userDataDir String Pfad zum Verzeichnis der Nutzerdaten, das Chrome verwendet; Hinweis: Dies befindet sich in einem Chrome- Wörterbuch