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:
- Verwenden Sie die Klasse
ChromeOptions
. Dies wird von Java, Python usw. unterstützt. - 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.
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. |