Mogelijkheden zijn opties die u kunt gebruiken om een ChromeDriver-sessie aan te passen en te configureren. Deze pagina documenteert alle door ChromeDriver ondersteunde mogelijkheden en hoe u deze kunt gebruiken.
De WebDriver-taal-API's bieden manieren om mogelijkheden door te geven aan ChromeDriver. Het exacte mechanisme verschilt per taal, maar de meeste talen gebruiken een of beide van de volgende mechanismen:
- Gebruik de
ChromeOptions
klasse. Dit wordt ondersteund door Java, Python, etc. - Gebruik de klasse
DesiredCapabilities
. Dit wordt ondersteund door Python, Ruby, etc. Hoewel het ook beschikbaar is in Java, is het gebruik ervan in Java verouderd.
De ChromeOptions-klasse gebruiken
U kunt een exemplaar van ChromeOptions
maken, dat handige methoden biedt voor het instellen van ChromeDriver-specifieke mogelijkheden. Vervolgens kunt u het ChromeOptions
object doorgeven aan de ChromeDriver-constructor:
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);
Sinds Selenium versie 3.6.0 implementeert de ChromeOptions
klasse in Java ook de Capabilities
interface, waardoor u andere WebDriver-mogelijkheden kunt specificeren die niet specifiek zijn voor ChromeDriver.
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);
Gewenste mogelijkheden gebruiken
Om DesiredCapabilities
te gebruiken, moet u de naam van de mogelijkheid kennen en het type waarde dat daarvoor nodig is. Bekijk hier de volledige lijst.
Python
caps = webdriver.DesiredCapabilities.CHROME.copy()
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)
Robijn
caps = Selenium::WebDriver::Remote::Capabilities.chrome(
"goog:chromeOptions" => {"args" => [ "window-size=1000,800" ]})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps
Veelvoorkomende gebruiksscenario's
Gebruik een aangepast profiel (ook wel gebruikersgegevensmap genoemd)
Standaard maakt ChromeDriver voor elke sessie een nieuw tijdelijk profiel aan. Soms wilt u misschien speciale voorkeuren instellen of gewoon een aangepast profiel gebruiken. In het eerste geval kunt u de mogelijkheid 'chrome.prefs' (hieronder beschreven) gebruiken om voorkeuren op te geven die worden toegepast nadat Chrome is gestart. In het laatste geval kunt u de opdrachtregeloptie user-data-dir
van Chrome gebruiken om Chrome te vertellen welk profiel moet worden gebruikt:
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");
U kunt uw eigen aangepaste profiel maken door Chrome uit te voeren (op de opdrachtregel of via ChromeDriver) met de schakelaar user-data-dir
ingesteld op een nieuwe map. Als het pad niet bestaat, maakt Chrome een nieuw profiel op de opgegeven locatie. Vervolgens kunt u de profielinstellingen naar wens aanpassen, zodat ChromeDriver het profiel in de toekomst kan gebruiken. Open chrome://version in de browser om te zien welk profiel Chrome gebruikt.
Start Chrome gemaximaliseerd
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");
Een uitvoerbaar Chrome-bestand gebruiken op een niet-standaard locatie
ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");
Dialoogvensters blokkeren
Standaard configureert ChromeDriver Chrome om pop-upvensters toe te staan. Als u pop-ups wilt blokkeren (dat wil zeggen, het normale Chrome-gedrag wilt herstellen wanneer dit niet wordt beheerd door ChromeDriver), doet u het volgende:
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
Arrays.asList("disable-popup-blocking"));
Stel de downloadmap in
De volgende code kan worden gebruikt om Chrome te configureren om bestanden naar een specifieke map te downloaden. Er zijn echter een aantal kanttekeningen waar u rekening mee moet houden:
- Chrome staat het downloaden van bepaalde mappen niet toe. In het bijzonder kunt u de bureaubladmap niet als downloadmap gebruiken. Op Linux kun je de homedirectory ook niet gebruiken om te downloaden. Omdat de exacte lijst met verboden mappen kan worden gewijzigd, wordt aanbevolen dat u een map gebruikt die geen speciale betekenis voor het systeem heeft.
- ChromeDriver wacht niet automatisch tot het downloaden is voltooid. Als u driver.quit() te vroeg aanroept, wordt Chrome mogelijk beëindigd voordat de download is voltooid.
- Relatieve paden werken niet altijd. Voor het beste resultaat gebruikt u in plaats daarvan het volledige pad.
- In Windows gebruikt u "" als padscheidingstekens. Het gebruik van "/" is niet betrouwbaar op Windows.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);
Erkende capaciteiten
Raadpleeg de Selenium-documentatie en de W3C WebDriver-standaard voor de standaardmogelijkheden die door ChromeDriver worden geaccepteerd. Hier vermelden we alleen Chrome-specifieke mogelijkheden.
ChromeOptions
-object
De meeste Chrome-specifieke mogelijkheden worden zichtbaar via het ChromeOptions
object. In sommige talen wordt dit geïmplementeerd door de klasse ChromeOptions
. In andere talen worden ze met de gewenste mogelijkheden opgeslagen onder het woordenboek goog:chromeOptions
.
perfLoggingPrefs
-object
Het perfLoggingPrefs-woordenboek heeft het volgende formaat (alle sleutels zijn optioneel):
Naam | Type | Standaard | Beschrijving |
---|---|---|---|
enableNetwork | Booleaans | WAAR | Of er wel of niet gebeurtenissen uit het netwerkdomein moeten worden verzameld. |
enablePage | Booleaans | WAAR | Of er wel of niet evenementen uit het Page-domein moeten worden verzameld. |
traceCategories | snaar | (leeg) | Een door komma's gescheiden reeks Chrome-traceercategorieën waarvoor traceergebeurtenissen moeten worden verzameld. Een niet-gespecificeerde of lege tekenreeks schakelt tracering uit. |
bufferUsageReportingInterval | positief geheel getal | 1000 | Het gevraagde aantal milliseconden tussen DevTools-traceerbuffergebruiksgebeurtenissen. Als dit bijvoorbeeld 1000 is, rapporteert DevTools eenmaal per seconde hoe vol de traceerbuffer is. Als uit een rapport blijkt dat het buffergebruik 100% is, wordt er een waarschuwing gegeven. |
Teruggegeven mogelijkheden
Dit is een lijst met alle Chrome-specifieke geretourneerde mogelijkheden. (dat wil zeggen, wat ChromeDriver retourneert wanneer u een nieuwe sessie maakt)
Naam | Type | Beschrijving |
---|---|---|
chrome.chromedriverVersion | snaar | versie van ChromeDriver |
userDataDir | snaar | pad naar de map met gebruikersgegevens die Chrome gebruikt; let op, dit staat in een 'chrome'-woordenboek |