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 klasse ChromeOptions . 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);

Gebruik de gewenste mogelijkheden

Om DesiredCapabilities te gebruiken, moet u de naam van de mogelijkheid kennen en het type waarde dat nodig is. Bekijk 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

Standaard maakt ChromeDriver voor elke sessie een nieuw tijdelijk profiel aan. Misschien wilt u speciale voorkeuren instellen of gewoon een aangepast profiel gebruiken, ook wel de map met gebruikersgegevens genoemd.

Als u het tijdelijke profiel gebruikt, kunt u de mogelijkheid chrome.prefs gebruiken om voorkeuren op te geven die moeten worden toegepast nadat Chrome is gestart. Voor aangepaste profielen kunt u de opdrachtregeloptie user-data-dir van Chrome gebruiken om Chrome te laten weten welk profiel moet worden gebruikt:

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

Maak uw eigen aangepaste profiel door Chrome op de opdrachtregel of met ChromeDriver uit te voeren, met behulp van de user-data-dir schakelaar die is ingesteld op een nieuwe map.

Als het pad niet bestaat, maakt Chrome een nieuw profiel op de opgegeven locatie. U kunt vervolgens de profielinstellingen wijzigen, 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

Start Chrome gemaximaliseerd door de start-maximized schakelaar te gebruiken:

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

Gebruik een uitvoerbaar Chrome-bestand 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 en 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 kunt u de thuismap niet gebruiken om te downloaden. De exacte lijst met verboden mappen kan worden gewijzigd. Daarom raden we u aan een unieke map te gebruiken 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.
  • Voor de beste resultaten gebruikt u volledige paden, aangezien relatieve paden niet altijd werken.
  • In Windows gebruikt u \` as path separators. /` 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

Lees de Selenium-documentatie en de W3C WebDriver-standaard voor standaardmogelijkheden die door ChromeDriver worden geaccepteerd. Hier vermelden we de Chrome-specifieke mogelijkheden.

ChromeOptions object

De meeste Chrome-specifieke mogelijkheden worden zichtbaar via het ChromeOptions object. In sommige talen worden ze geïmplementeerd door de klasse ChromeOptions . In andere talen worden ze in geselecteerde 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 (zoals ['start-gemaximaliseerd', 'user-data-dir=/tmp/temp_profile']). Bekijk een lijst met Chrome-argumenten .
binary snaar Pad naar het uitvoerbare Chrome-bestand dat moet worden gebruikt.
Op macOS X zou dit het daadwerkelijke binaire bestand moeten zijn, en 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 beëindigd. Als dit waar is en de sessie niet wordt 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>, zoals '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. Geef schakelaars geen voorvoegsel -- .
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 de volgende indeling. 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 vervolgens één keer per seconde hoe vol de traceerbuffer is. Als uit een rapport blijkt dat het buffergebruik 100% is, wordt er een waarschuwing gegeven.

Teruggegeven mogelijkheden

Hier is een lijst met alle Chrome-specifieke geretourneerde mogelijkheden, met andere woorden, 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