Opcje Chrome i pożądane możliwości w Selenium

⚡ Inteligentne podsumowanie

Opcje Chrome i pożądane możliwości w Selenium WebDriver kontroluje sposób uruchamiania i zachowanie przeglądarki Chrome podczas testów automatycznych. Razem konfigurują argumenty, rozszerzenia, obsługę SSL i ustawienia między przeglądarkami, dzięki czemu testy są elastyczne, powtarzalne i gotowe do użycia. Selenium Wykonanie siatki.

  • 🌐 Opcje Chrome: Dostosowuje sesje za pomocą argumentów, takich jak start-maximized, incognito i headless.
  • ⚙️ Pożądane możliwości: Ustawia nazwę przeglądarki, platformę, wersję i akceptację certyfikatu SSL.
  • 🧩 Rozszerzenia: Załaduj plik CRX automatycznie zamiast instalować go ręcznie.
  • 🕵️. Incognito i bezgłowy: Wielokrotnego użytku kod uruchamia prywatne sesje lub sesje w tle dla potoków CI.
  • 🖥️. Selenium Krata: Funkcje umożliwiają rozproszone wykonywanie testów w różnych przeglądarkach.
  • ⚠️ Selenium Uwaga 4: DesiredCapabilities jest przestarzałe; ChromeOptions należy przekazywać bezpośrednio do sterownika.

Opcje Chrome i pożądane możliwości w Selenium Sterownik sieciowy

Co to jest klasa opcji Chrome?

Klasa opcji Chrome jest koncepcją w Selenium WebDriver do manipulowania różnymi właściwościami sterownika Chrome. Klasa opcji Chrome jest zazwyczaj używana w połączeniu z Desired Capabilities do dostosowywania sesji sterownika Chrome. Pomaga wykonywać różne operacje, takie jak otwieranie Chrome w trybie zmaksymalizowanym, wyłączanie istniejących rozszerzeń, wyłączanie wyskakujących okienek itp.

Przykład:

Poniższy przykład pokazuje sposób otwarcia przeglądarki Chrome w trybie zmaksymalizowanym przy użyciu klasy ChromeOptions. Musimy przekazać instancję klasy ChromeOptions do inicjalizacji sterownika sieciowego.

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

Poniżej znajduje się lista dostępnych i najczęściej używanych argumentów klasy ChromeOptions

  • maksymalny start: otwiera przeglądarkę Chrome w trybie maksymalizacji
  • incognito: Otwiera Chrome w trybie incognito
  • bezgłowy: Otwiera Chrome w trybie bezgłowym
  • wyłącz rozszerzenia: wyłącza istniejące rozszerzenia w przeglądarce Chrome
  • wyłącz blokowanie wyskakujących okienek: Wyłącza wyskakujące okienka wyświetlane w przeglądarce Chrome
  • Make-Default-Browser: Ustawia przeglądarkę Chrome jako domyślną
  • wersja: Drukuje wersję przeglądarki Chrome
  • wyłącz paski informacyjne: Uniemożliwia Chrome wyświetlanie powiadomienia „Chrome jest kontrolowany przez zautomatyzowane oprogramowanie”.

Pożądana klasa możliwości

Pożądana klasa możliwości służy do modyfikowania wielu właściwości sterowników internetowych. Udostępnia pary klucz-wartość umożliwiające zmianę indywidualnych właściwości sterowników sieciowych, takich jak nazwa przeglądarki, platforma przeglądarki itp. Powszechną metodą klasy Desired Capabilities jest metoda setCapability. Najczęściej używany z Selenium Grid, w którym ten sam przypadek testowy należy wykonać w różnych przeglądarkach.

Przykład:

Poniższy przykład pokazuje, jak włączyć przeglądarkę Chrome, aby domyślnie akceptowała certyfikaty SSL na stronach internetowych przy użyciu klasy Desired Capabilities for Chrome.

// 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);

Poniżej znajdują się najczęściej używane wstępnie zdefiniowane typy możliwości.

Nazwa zdolności OPIS
ACCEPT_SSL_CERTS Ta właściwość informuje przeglądarkę, aby domyślnie akceptowała certyfikaty SSL
Platformy PLATFORM_NAME Ta właściwość służy do ustawiania platformy systemu operacyjnego używanej do uzyskiwania dostępu do witryny internetowej
NAZWA PRZEGLĄDARKI Ta właściwość służy do ustawiania nazwy przeglądarki dla instancji sterownika internetowego
WERSJA Ta właściwość służy do ustawiania wersji przeglądarki

Opcje Chrome dla rozszerzenia Adblocker

Rozszerzenie Adblocker przeglądarki Chrome można obsługiwać za pomocą klasy ChromeDriver Options i Desired Capabilities. Poniżej przedstawiono kroki dostępu AdBlocker w przeglądarce Chrome przy użyciu klasy Desired Capabilities.

Krok 1) AdBlocker musi być zainstalowane w przeglądarce Chrome przed użyciem klasy Opcje Chrome

Krok 2) Extracdo pliku CRX odpowiadającego AdBlockrozszerzenie er przez http://crxextractor.com/

Krok 3) Przekaż ścieżkę pobranego pliku CRX do klasy Opcje Chrome

Krok 4) Utwórz instancję sterownika internetowego, korzystając z żądanej klasy możliwości i opcji Chrome w Selenium przedmiot

Przykład:

Poniższy przykład pokazuje, jak aktywować rozszerzenie blokujące reklamy w przeglądarce Chrome przy użyciu opcji Chrome i klasy Desired Capabilities.

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);

ExtracPlik CRX

Poniższe kroki pokazują proces extracpobieranie pliku CRX przez Ad Blocker za pośrednictwem witryny internetowej – http://crxextractor.com/

Krok 1) Iść do http://crxextractor.com/ i kliknij przycisk Start

ExtracPlik CRX

Krok 2) Wprowadź rozszerzenie Chrome – Ad Blocker URL pod polem tekstowym. URL dla Adblocka w Chrome sklep internetowy to https://chrome.google.com/webstore/detail/adblock-%E2%80%94-best-ad-blocker/gighmmpiobklfepjocnamgkkbiglidom

i kliknij OK

ExtracPlik CRX

Krok 3) Po kliknięciu przycisku OK etykieta przycisku zmieni się na Pobierz .CRX, jak poniżej. Kliknij przycisk Pobierz .CRX, plik CRX odpowiadający rozszerzeniu zostanie pobrany

ExtracPlik CRX

Krok 4) Zapisz plik na komputerze lokalnym, zanotuj zapisaną ścieżkę. Następnym krokiem jest przekazanie zapisanej ścieżki do klasy Opcje Chrome

Próba Code:

  1. Reklamy zobaczysz na https://demo.guru99.com/ jak poniżej

ExtracPlik CRX

  1. Z AdBlocker włączone w reklamach przeglądarki Chrome powinno być wyłączone
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("https://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();
	//driver.quit();
	}
	
}

Code Wyjaśnienie:

  1. Początkowo musisz ustawić ścieżkę do pliku chromedriver.exe przy użyciu metody ustawiania właściwości, ponieważ do testowania używasz przeglądarki Chrome
  2. Aby dodać metodę rozszerzeń, musisz ustawić ścieżkę do pliku CRX
  3. Następnie musisz utworzyć obiekt pożądanych możliwości Chrome w Selenium class i przekazać ją do instancji sterownika internetowego. Z Selenium Wersja 3.8.1, klasa możliwości sterownika jest przestarzała i należy połączyć obiekt możliwości z obiektem Opcji Chrome przed przekazaniem tego samego jako argumentu do konstruktora sterownika Chrome
  4. Otwórz URL - https://demo.guru99.com/test/simple_context_menu.html z włączonym rozszerzeniem Ad Blocker
  5. Zmaksymalizuj i zamknij przeglądarkę

UWAGA: Umożliwiamy AdBlockeee rozszerzenie w przeglądarce Chrome za pomocą skryptu automatyzacji zamiast ręcznego włączania rozszerzenia Adblocker w przeglądarce Chrome. Plik CRX to sposób na dostęp do rozszerzenia Adblocker za pomocą skryptu automatyzacji

Wyjście:

Przeglądarka Chrome zostanie włączona AdBlocker włączone jak poniżej, bez żadnych reklam

ExtracPlik CRX

Oprócz ładowania rozszerzeń ChromeOptions kontroluje również sposób działania samego okna przeglądarki.

Opcje Chrome dla trybu incognito

Opcji Chrome można używać w trybie incognito, używając predefiniowanego argumentu –incognito.

Poniżej znajduje się przykładowy kod umożliwiający osiągnięcie tego samego.

Próba Code:

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("https://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();		
	//driver.quit();
	}
	}

Code Wyjaśnienie:

  1. Początkowo musisz ustawić ścieżkę do pliku chromedriver.exe przy użyciu metody ustawiania właściwości, ponieważ do testowania używasz przeglądarki Chrome
  2. Następnie musisz utworzyć obiekt klasy Opcje Chrome i przekazać go do instancji sterownika internetowego. Ponieważ chcemy otworzyć przeglądarkę Chrome w trybie incognito, należy przekazać argument –incognito do klasy Opcje Chrome.
  3. Następnie utwórz obiekt klasy Desired Capabilities i połącz obiekt klasy Desired Capabilities z obiektem klasy Chrome Options, używając metody scalania
  4. Musisz utworzyć obiekt klasy Chrome Driver i przekazać obiekt Opcje Chrome jako argument
  5. Na koniec musimy przekazać URL - https://demo.guru99.com/test/simple_context_menu.html do metody Driver.get
  6. Zmaksymalizuj i zamknij przeglądarkę

Wyjście:

Okno przeglądarki Chrome zostanie otwarte w trybie incognito, jak poniżej

Opcje Chrome dla trybu incognito

Opcje Chrome dla Headless Chrome

Przeglądarka Headless działa w tle. Nie zobaczysz GUI przeglądarki ani operacji, które zostały na niej wykonane.

Opcje Chrome umożliwiające uruchomienie przeglądarki Chrome w trybie bezgłowym można ustawić za pomocą predefiniowanych argumentów –bezgłowy.

Przykładowy kod umożliwiający osiągnięcie tego celu znajduje się poniżej.

Przykład:

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("https://demo.guru99.com/");
		driver.manage().window().maximize();
		String title = driver.getTitle();
		System.out.println("Page Title: " +title);
		driver.quit();
		}


}

Code Wyjaśnienie:

  1. Początkowo musisz ustawić ścieżkę do pliku chromedriver.exe przy użyciu metody ustawiania właściwości, ponieważ do testowania używasz przeglądarki Chrome
  2. Następnie utwórz obiekt klasy Opcje Chrome i przekaż go do instancji sterownika internetowego. Ponieważ chcemy otworzyć przeglądarkę Chrome w trybie headless, musimy przekazać argument –headless do klasy Opcje Chrome.
  3. Utwórz obiekt klasy DesiredCapabilities Chrome i połącz obiekt klasy Desired Capabilities z obiektem klasy Opcje Chrome, używając metody scalania
  4. Utwórz obiekt klasy sterownika Chrome i przekaż Opcje Chrome Selenium obiekt jako argument
  5. Na koniec musimy przekazać URL - https://demo.guru99.com/ do metody Driver.get
  6. Wydrukuj tytuł strony i zamknij przeglądarkę

Wydajność

Przeglądarka nie będzie widoczna dla powyższego kodu, ponieważ Chrome będzie działać w trybie Headless. Tytuł strony zostanie pobrany i wyświetlony w sposób pokazany poniżej.

Opcje Chrome dla bezgłowego Chrome

FAQ

Tak. Selenium 4 wycofano DesiredCapabilities na rzecz klas opcji przeglądarki, takich jak ChromeOptions. Selenium 3 połączyłeś je; w Selenium 4 przekazujesz ChromeOptions bezpośrednio do sterownika.

Wywołaj addArguments z kilkoma flagami, na przykład options.addArguments z parametrem start-maximized i incognito. Możesz również połączyć wiele wywołań. Każdy argument dostosowuje sposób uruchamiania sesji Chrome.

Funkcja addArguments przekazuje do Chrome flagi wiersza poleceń, takie jak headless lub incognito. Funkcja addExtensions wczytuje spakowany plik rozszerzenia .crx do sesji. Obie funkcje dostosowują zachowanie, ale służą różnym celom.

Tak. Asystenci AI, tacy jak Copilot, wspierają konfiguracje ChromeOptions i możliwości, sugerują nazwy argumentów i wyjaśniają przestarzałe interfejsy API. Zawsze sprawdzaj dane wyjściowe, ponieważ nazwy flag i Selenium wersje zmieniają się często.

Narzędzia samonaprawiające AI automatycznie aktualizują argumenty, wykrywają niestabilne flagi i sugerują stabilne zamienniki po aktualizacjach Chrome. Ograniczają one konserwację uruchomień bezobsługowych i rozbieżności w możliwościach w środowiskach CI.

Tak. ChromeOptions współpracuje z RemoteWebDriver w celu wykonania w sieci. Opcje są dołączane do sesji zdalnej, co pozwala na uruchomienie tej samej konfiguracji na rozproszonych maszynach i przeglądarkach.

Zwykle oznacza to, że wersje ChromeDrivera i przeglądarki Chrome nie są zgodne. Zainstaluj pasujący ChromeDriver lub użyj Selenium Menedżer w Selenium 4, aby automatycznie rozwiązać problem ze sterownikiem.

Użyj opcji eksperymentalnej: mapy preferencji z parametrem download.default_directory przekazanym za pomocą setExperimentalOption. Chrome automatycznie zapisuje pliki w tym folderze podczas testów automatycznych.

Podsumuj ten post następująco: