Chrome-Optionen und gewünschte Funktionen im Selenium Webdriver

Was ist die Chrome Options-Klasse?

Der Chromeoptions-Klasse ist ein Konzept in Selenium WebDriver zur Manipulation verschiedener Eigenschaften des Chrome-Treibers. Die Chrome-Optionsklasse wird im Allgemeinen in Verbindung mit Desired Capabilities zum Anpassen von Chrome-Treibersitzungen verwendet. Es hilft Ihnen bei der Durchführung verschiedener Vorgänge wie dem Öffnen von Chrome im maximierten Modus, dem Deaktivieren vorhandener Erweiterungen, dem Deaktivieren von Popups usw.

Beispiel:

Das folgende Beispiel zeigt eine Möglichkeit, den Chrome-Browser mithilfe der ChromeOptions-Klasse im maximierten Modus zu öffnen. Wir müssen eine Instanz der ChromeOptions-Klasse an die Webtreiberinitialisierung übergeben.

ChromeOptions options = new ChromeOptions()
options.addArgument("start-maximized");
ChromeDriver driver = new ChromeDriver(options);

Nachfolgend finden Sie eine Liste der verfügbaren und am häufigsten verwendeten Argumente für die ChromeOptions-Klasse

  • startmaximiert: Öffnet Chrome im Maximierungsmodus
  • inkognito: Öffnet Chrome im Inkognito-Modus
  • kopflos: Öffnet Chrome im Headless-Modus
  • Erweiterungen deaktivieren: Deaktiviert vorhandene Erweiterungen im Chrome-Browser
  • Popup-Blockierung deaktivieren: Deaktiviert Popups, die im Chrome-Browser angezeigt werden
  • make-default-browser: Macht Chrome zum Standardbrowser
  • Version: Druckt die Chrome-Browserversion
  • Infoleisten deaktivieren: Verhindert, dass Chrome die Benachrichtigung „Chrome wird von automatisierter Software gesteuert“ anzeigt

Klasse „Gewünschte Fähigkeiten“.

Gewünschte Fähigkeitsklasse wird verwendet, um mehrere Eigenschaften von Webtreibern zu ändern. Es stellt Schlüssel-Wert-Paare bereit, um einzelne Eigenschaften von Webtreibern wie Browsername, Browserplattform usw. zu ändern. Eine gängige Methode der Desired Capabilities-Klasse ist die setCapability-Methode. Es wird hauptsächlich mit Selenium Grid verwendet, wo derselbe Testfall auf verschiedenen Browsern ausgeführt werden muss.

Beispiel:

Das folgende Beispiel zeigt, wie der Chrome-Browser mithilfe der Klasse „Desired Capabilities for Chrome“ standardmäßig SSL-Zertifikate auf Websites akzeptieren kann.

// Create an object of desired capabilities class with Chrome driver
DesiredCapabilities SSLCertificate = DesiredCapabilities.chrome();
// Set the pre defined capability – ACCEPT_SSL_CERTS value to true
SSLCertificate.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
// Open a new instance of chrome driver with the desired capability
WebDriver driver = new ChromeDriver(SSLCertificate);

Nachfolgend sind die am häufigsten verwendeten vordefinierten Fähigkeitstypen aufgeführt.

Funktionsname Beschreibung
ACCEPT_SSL_CERTS Diese Eigenschaft weist den Browser an, standardmäßig SSL-Zertifikate zu akzeptieren
Platform_name Mit dieser Eigenschaft wird die Betriebssystemplattform festgelegt, die für den Zugriff auf die Website verwendet wird
BROWSER_NAME Mit dieser Eigenschaft wird der Browsername für eine Webtreiberinstanz festgelegt
VERSION Mit dieser Eigenschaft wird die Browserversion festgelegt

Chrome-Optionen für die Adblocker-Erweiterung

Die Adblocker-Erweiterung des Chrome-Browsers kann mithilfe der ChromeDriver-Optionen und der Klasse „Desired Capabilities“ verwaltet werden. Im Folgenden finden Sie die Schritte zum Zugriff auf die AdBlocker-Erweiterung im Chrome-Browser mithilfe der Klasse „Desired Capabilities“.

Schritt 1) Die AdBlocker-Erweiterung muss im Chrome-Browser installiert werden, bevor die Chrome-Optionsklasse verwendet werden kann

Schritt 2) Extrahieren Sie die CRX-Datei, die der AdBlocker-Erweiterung entspricht, über http://crxextractor.com/

Schritt 3) Übergeben Sie den heruntergeladenen CRX-Dateipfad an die Chrome-Optionsklasse

Schritt 4) Instanziieren Sie den Webtreiber mit der gewünschten Funktionsklasse und den Chrome-Optionen im Selenium-Objekt

Beispiel:

Das folgende Beispiel zeigt, wie Sie die Werbeblocker-Erweiterung im Chrome-Browser mithilfe der Chrome-Optionen und der Klasse „Gewünschte Funktionen“ aktivieren.

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("Path to CRX File"));
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);

CRX-Datei extrahieren

Die folgenden Schritte veranschaulichen den Prozess des Extrahierens einer CRX-Datei über den Ad Blocker über die Website – http://crxextractor.com/

Schritt 1) Gehen Sie zu http://crxextractor.com/ und klicken Sie auf die Schaltfläche „Start“.

CRX-Datei extrahieren

Schritt 2) Geben Sie unter dem Text die Chrome-Erweiterung „Werbeblocker-URL“ einbox. Die URL für Adblock im Chrome-Webshop lautet https://chrome.google.com/webstore/detail/adblock-%E2%80%94-best-ad-blocker/gighmmpiobklfepjocnamgkkbiglidom

und klicken Sie auf OK

CRX-Datei extrahieren

Schritt 3) Wenn Sie auf die Schaltfläche „OK“ klicken, ändert sich die Beschriftung der Schaltfläche in „Get .CRX“ (siehe unten). Klicken Sie auf die Schaltfläche „Get .CRX“. Die der Erweiterung entsprechende CRX-Datei wird heruntergeladen

CRX-Datei extrahieren

Schritt 4) Speichern Sie die Datei auf dem lokalen Computer und notieren Sie sich den gespeicherten Pfad. Der nächste Schritt besteht darin, den gespeicherten Pfad an die Chrome-Optionsklasse zu übergeben

Beispielcode:

  1. Sie sehen Anzeigen unter http://demo.guru99.com/ wie nachstehend

CRX-Datei extrahieren

  1. Wenn die AdBlocker-Erweiterung im Chrome-Browser aktiviert ist, sollten Anzeigen deaktiviert sein
package adblock;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;


public class AdblockDemo {
public static void main(String[] args)  {
	
	System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");		
	ChromeOptions options = new ChromeOptions();
	options.addExtensions(new File("X://extension_3_40_1_0.crx")); 
	DesiredCapabilities capabilities = new DesiredCapabilities();
	capabilities.setCapability(ChromeOptions.CAPABILITY, options);
	options.merge(capabilities);
	ChromeDriver driver = new ChromeDriver(options);
	driver.get("http://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();
	//driver.quit();
	}
	
}

Code Erklärung:

  1. Zunächst müssen Sie den Pfad zur Datei chromedriver.exe mithilfe der Set-Property-Methode festlegen, da Sie den Chrome-Browser zum Testen verwenden
  2. Sie müssen den Pfad zur CRX-Datei festlegen, um die Erweiterungsmethode hinzuzufügen
  3. Anschließend müssen Sie ein Objekt der gewünschten Chrome-Funktionen in der Selenium-Klasse erstellen und es an die Webtreiberinstanz übergeben. Ab der Selenium-Version 3.8.1 ist die Treiberfunktionsklasse veraltet und Sie müssen das Funktionsobjekt mit dem Chrome-Optionsobjekt zusammenführen, bevor Sie es als Argument an den Chrome-Treiberkonstruktor übergeben
  4. Öffnen Sie die URL – http://demo.guru99.com/test/simple_context_menu.html mit aktivierter Ad-Blocker-Erweiterung
  5. Maximieren und schließen Sie den Browser

Anmerkungen: Wir ermöglichen AdBlocker-Erweiterung im Chrome-Browser über ein Automatisierungsskript, anstatt die Adblocker-Erweiterung manuell im Chrome-Browser zu aktivieren. CRX File ist eine Möglichkeit, mithilfe eines Automatisierungsskripts auf die Werbeblocker-Erweiterung zuzugreifen

Ausgang:

Der Chrome-Browser wird mit aktivierter AdBlocker-Erweiterung wie unten ohne Werbung aktiviert

CRX-Datei extrahieren

Chrome-Optionen für den Inkognito-Modus

Chrome-Optionen können für den Inkognito-Modus verwendet werden, indem das vordefinierte Argument verwendet wird:Inkognito.

Unten finden Sie den Beispielcode, um dasselbe zu erreichen.

Beispielcode:

package test;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;

public class Incognito{
public static void main(String[] args) {
	// TODO Auto-generated method stub
	System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");
	ChromeOptions options = new ChromeOptions();
	options.addArguments("--incognito");
	DesiredCapabilities capabilities = new DesiredCapabilities();
	capabilities.setCapability(ChromeOptions.CAPABILITY, options);
	options.merge(capabilities);
	ChromeDriver driver = new ChromeDriver(options);		
	driver.get("http://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();		
	//driver.quit();
	}
	}

Code Erklärung:

  1. Zunächst müssen Sie den Pfad zur Datei chromedriver.exe mithilfe der Set-Property-Methode festlegen, da Sie den Chrome-Browser zum Testen verwenden
  2. Anschließend müssen Sie ein Objekt der Chrome-Optionsklasse erstellen und es an die Webtreiberinstanz übergeben. Da wir den Chrome-Browser im Inkognito-Modus öffnen möchten, müssen Sie das Argument –incognito an die Chrome-Optionsklasse übergeben.
  3. Erstellen Sie als Nächstes ein Objekt der Klasse „Desired Capabilities“ und führen Sie das Klassenobjekt „Desired Capabilities“ mithilfe der Merge-Methode mit dem Klassenobjekt „Chrome Options“ zusammen
  4. Sie müssen ein Objekt der Chrome-Treiberklasse erstellen und das Chrome-Optionsobjekt als Argument übergeben
  5. Schließlich müssen wir die URL übergeben – http://demo.guru99.com/test/simple_context_menu.html zur Methode „driver.get“.
  6. Maximieren und schließen Sie den Browser

Ausgang:

Das Chrome-Browserfenster wird wie folgt im Inkognito-Modus geöffnet

Chrome-Optionen für den Inkognito-Modus

Chrome-Optionen für Headless Chrome

Im Hintergrund läuft ein Headless-Browser. Sie sehen weder die Browser-GUI noch die darauf ausgeführten Vorgänge.

Chrome-Optionen zum Ausführen des Chrome-Browsers im Headless-Modus können mithilfe der vordefinierten Argumente erreicht werden:kopflos.

Beispielcode, um dies zu erreichen, ist unten aufgeführt.

Beispiel:

package test;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;


public class HeadlessModeDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");
		ChromeOptions options = new ChromeOptions();
		options.addArguments("--headless");
		DesiredCapabilities capabilities = new DesiredCapabilities();
		capabilities.setCapability(ChromeOptions.CAPABILITY, options);
		options.merge(capabilities);
		ChromeDriver driver = new ChromeDriver(options);		
		driver.get("http://demo.guru99.com/");
		driver.manage().window().maximize();
		String title = driver.getTitle();
		System.out.println("Page Title: " +title);
		driver.quit();
		}


}

Code Erklärung:

  1. Zunächst müssen Sie den Pfad zur Datei chromedriver.exe mithilfe der Set-Property-Methode festlegen, da Sie den Chrome-Browser zum Testen verwenden
  2. Erstellen Sie als Nächstes ein Objekt der Chrome-Optionsklasse und übergeben Sie es an die Webtreiberinstanz. Da wir den Chrome-Browser im Headless-Modus öffnen möchten, müssen wir das Argument –headless an die Chrome-Optionsklasse übergeben.
  3. Erstellen Sie ein Objekt der Chrome-Klasse „DesiredCapabilities“ und führen Sie das Klassenobjekt „Desired Capabilities“ mithilfe der Merge-Methode mit dem Klassenobjekt „Chrome Options“ zusammen
  4. Erstellen Sie ein Objekt der Chrome-Treiberklasse und übergeben Sie das Chrome Options Selenium-Objekt als Argument
  5. Schließlich müssen wir die URL übergeben – http://demo.guru99.com/ zur Methode „driver.get“.
  6. Drucken Sie den Seitentitel aus und schließen Sie den Browser

Output

Der Browser ist für den obigen Code nicht sichtbar, da Chrome im Headless-Modus arbeitet. Der Seitentitel wird abgerufen und wie folgt angezeigt.

Chrome-Optionen für Headless Chrome

Zusammenfassung

  • Die Selenium Chrome Options-Klasse wird zum Bearbeiten verschiedener Eigenschaften des Chrome-Treibers verwendet
  • Die Klasse „Desired Chrome Capabilities“ stellt eine Reihe von Schlüssel-Wert-Paaren bereit, um einzelne Eigenschaften des Webtreibers wie Browsername, Browserplattform usw. zu ändern.
  • Um Erweiterungen des Chrome-Browsers zu manipulieren, muss die der Erweiterung entsprechende CRX-Datei extrahiert und der Chrome-Optionsklasse hinzugefügt werden
  • –incognito und –headless sind vordefinierte Argumente, die von der Chrome-Optionsklasse für die Verwendung des Chrome-Browsers im Inkognito-Modus und Headless-Modus bereitgestellt werden