Mogelijkheden en ChromeOptions

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:

  1. Gebruik de ChromeOptions klasse. Dit wordt ondersteund door Java, Python, etc.
  2. 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 heeft voor het systeem.
  • 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 .

Naam Type Standaard Beschrijving
args lijst met snaren Lijst met opdrachtregelargumenten die u kunt gebruiken bij het starten van Chrome. Argumenten met een bijbehorende waarde moeten worden gescheiden door een '='-teken (bijvoorbeeld ['start-gemaximaliseerd', 'user-data-dir=/tmp/temp_profile']). Zie hier voor een lijst met Chrome-argumenten.
binary snaar Pad naar het uitvoerbare Chrome-bestand dat moet worden gebruikt (op Mac OS X zou dit het daadwerkelijke binaire bestand moeten zijn, niet alleen de app, zoals '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome')
extensions lijst met snaren Een lijst met Chrome-extensies die bij het opstarten moeten worden geïnstalleerd. Elk item in de lijst moet een met base-64 gecodeerde verpakte Chrome-extensie (.crx) zijn
localState woordenboek Een woordenboek waarbij elk item bestaat uit de naam van de voorkeur en de waarde ervan. Deze voorkeuren worden toegepast op het lokale statusbestand in de map met gebruikersgegevens.
prefs woordenboek Een woordenboek waarbij elk item bestaat uit de naam van de voorkeur en de waarde ervan. Deze voorkeuren worden alleen toegepast op het gebruikte gebruikersprofiel. Zie het bestand 'Voorkeuren' in de map met gebruikersgegevens van Chrome voor voorbeelden.
detach Booleaans vals Als dit niet waar is, wordt Chrome afgesloten wanneer ChromeDriver wordt afgesloten, ongeacht of de sessie wordt afgesloten. Als dit waar is, wordt Chrome alleen afgesloten als de sessie wordt afgesloten (of gesloten). Let op: als dit waar is en de sessie wordt niet afgesloten, kan ChromeDriver de map met tijdelijke gebruikersgegevens die de actieve Chrome-instantie gebruikt, niet opschonen.
debuggerAddress snaar
Een adres van een Chrome-foutopsporingsserver waarmee verbinding moet worden gemaakt, in de vorm van <hostnaam/ip:poort>, bijvoorbeeld '127.0.0.1:38947'
excludeSwitches lijst met snaren Lijst met Chrome-opdrachtregelopties waarmee wordt uitgesloten dat ChromeDriver standaard wordt doorgegeven bij het starten van Chrome. Zet schakelaars niet vooraf met --.
minidumpPath snaar Directory waarin Chrome-minidumps worden opgeslagen. (Alleen ondersteund op Linux.)
mobileEmulation woordenboek Een woordenboek met een waarde voor 'deviceName', of waarden voor 'deviceMetrics' en 'userAgent'. Raadpleeg Mobiele emulatie voor meer informatie.
perfLoggingPrefs woordenboek Een optioneel woordenboek dat voorkeuren voor prestatieregistratie specificeert. Zie hieronder voor meer informatie.
windowTypes lijst met snaren Een lijst met venstertypen die verschijnen in de lijst met venstergrepen. Voor toegang tot <webview>-elementen neemt u "webview" op in deze lijst.

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