Funkcje i opcje Chrome

Możliwości to opcje, których możesz używać do dostosowywania i konfigurowania sesji ChromeDriver. Ta strona zawiera informacje o wszystkich obsługiwanych przez ChromeDriver funkcjach i o sposobie ich używania.

Interfejsy API języka WebDriver umożliwiają przekazywanie funkcji do ChromeDriver. Dokładny mechanizm zależy od języka, ale większość języków używa jednego lub obu z tych mechanizmów:

  1. Użyj klasy ChromeOptions. Jest to obsługiwane przez Java, Python itp.
  2. Użyj klasy DesiredCapabilities. Jest to obsługiwane przez Pythona, Ruby itp. Chociaż jest też dostępne w Java, jego użycie w tym języku jest nieużywane.

Korzystanie z klasy ChromeOptions

Możesz utworzyć instancję ChromeOptions, która zawiera wygodne metody ustawiania funkcji specyficznych dla ChromeDriver. Następnie możesz przekazać obiekt ChromeOptions do konstruktora ChromeDriver:

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

Od wersji 3.6.0 Selenium klasa ChromeOptions w Javie implementuje również interfejs Capabilities, co pozwala określać inne możliwości WebDrivera, które nie są specyficzne dla ChromeDrivera.

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

Używanie DesiredCapabilities

Aby używać funkcji DesiredCapabilities, musisz znać jej nazwę i typ wartości, którą zwraca. Zobacz pełną listę.

Python

caps = webdriver.DesiredCapabilities.CHROME.copy()
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)

Ruby

caps = Selenium::WebDriver::Remote::Capabilities.chrome(
  "goog:chromeOptions" => {"args" => [ "window-size=1000,800" ]})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps

Typowe zastosowania

Używanie profilu niestandardowego

Domyślnie ChromeDriver tworzy nowy tymczasowy profil dla każdej sesji. Możesz ustawić specjalne ustawienia lub po prostu użyć profilu niestandardowego, zwanego też katalogiem danych użytkownika.

Jeśli używasz profilu tymczasowego, możesz użyć funkcji chrome.prefs, aby określić ustawienia, które mają być stosowane po uruchomieniu Chrome. W przypadku profili niestandardowych możesz użyć przełącznika wiersza poleceń Chrome user-data-dir, aby określić, którego profilu użyć:

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

Utwórz własny profil niestandardowy, uruchamiając Chrome w wierszu poleceń lub za pomocą ChromeDriver, używając przełącznika user-data-dir ustawionego na nowy katalog.

Jeśli ścieżka nie istnieje, Chrome utworzy nowy profil w określonym miejscu. Następnie możesz zmodyfikować ustawienia profilu, a ChromeDriver będzie mógł go używać w przyszłości. Otwórz chrome://version w przeglądarce, aby sprawdzić, którego profilu używa Chrome.

Uruchom Chrome w trybie pełnoekranowym

Uruchom Chrome w trybie pełnoekranowym, używając przełącznika start-maximized:

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

Używanie pliku wykonywalnego Chrome w niestandardowej lokalizacji

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

Blokowanie okien dialogowych

Domyślnie ChromeDriver konfiguruje Chrome tak, aby zezwalał na okna wyskakujące. Jeśli chcesz zablokować wyskakujące okienka i przywrócić normalne działanie Chrome, gdy nie jest ono kontrolowane przez ChromeDriver, wykonaj te czynności:

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
     Arrays.asList("disable-popup-blocking"));

Ustawianie katalogu pobierania

Aby skonfigurować Chrome tak, aby pobierało pliki do określonego katalogu, możesz użyć poniższego kodu. Należy jednak pamiętać o kilku ograniczeniach:

  • Chrome nie zezwala na pobieranie plików z pewnych katalogów. W szczególności nie możesz użyć folderu na pulpicie jako katalogu pobierania. W systemie Linux nie można pobierać plików do katalogu domowego. Dokładna lista zakazanych katalogów może ulec zmianie, dlatego zalecamy używanie unikalnego katalogu, który nie ma specjalnego znaczenia dla systemu.
  • ChromeDriver nie czeka automatycznie na zakończenie pobierania. Jeśli wywołasz funkcję driver.quit() zbyt wcześnie, Chrome może się zamknąć przed zakończeniem pobierania.
  • Aby uzyskać najlepsze wyniki, używaj pełnych ścieżek, ponieważ ścieżki względne nie zawsze działają.
  • W systemie Windows użyj \` as path separators./`.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

Rozpoznane funkcje

Zapoznaj się z dokumentacją Seleniumstandardem W3C WebDriver, aby dowiedzieć się, jakie standardowe funkcje są obsługiwane przez ChromeDriver. Poniżej przedstawiamy funkcje dostępne w Chrome.

ChromeOptions obiekt

Większość funkcji specyficznych dla Chrome jest udostępniana za pomocą obiektu ChromeOptions. W niektórych językach są one implementowane przez klasę ChromeOptions. W innych językach są one przechowywane w słowniku goog:chromeOptions w wybranych funkcjach.

Nazwa Typ Domyślny Opis
args lista ciągów tekstowych   Lista argumentów wiersza poleceń do użycia podczas uruchamiania Chrome. Argumenty z powiązaną wartością powinny być rozdzielone znakiem „=”. Przykład: [„start-maximized”, „user-data-dir=/tmp/temp_profile”]. Zobacz listę argumentów Chrome.
binary ciąg znaków   Ścieżka do pliku wykonywalnego Chrome.
W systemie macOS X powinien to być rzeczywisty plik binarny, a nie sama aplikacja, na przykład:/Applications/Google Chrome.app/Contents/MacOS/Google Chrome.
extensions lista ciągów tekstowych   lista rozszerzeń Chrome do zainstalowania przy starcie; Każdy element na liście powinien być zapakowanym rozszerzeniem Chrome (w formacie .crx) zakodowanym w formacie base64.
localState słownik   słownik, w którym każdy wpis składa się z nazwy ustawienia i jego wartości; Te ustawienia są stosowane do pliku Local State w folderze danych użytkownika.
prefs słownik   słownik, w którym każdy wpis składa się z nazwy ustawienia i jego wartości; Te ustawienia są stosowane tylko do używanego profilu użytkownika. Przykłady znajdziesz w pliku „Ustawienia” w katalogu danych użytkownika w Chrome.
detach wartość logiczna fałsz Jeśli wartość jest równa fałsz, Chrome jest zamykane, gdy ChromeDriver zostanie zamknięty, niezależnie od tego, czy sesja została zamknięta.
Jeśli to ustawienie ma wartość Prawda, Chrome zamyka się tylko wtedy, gdy sesja zostanie zamknięta. Jeśli jest to prawda, a sesja nie została zamknięta, ChromeDriver nie może wyczyścić tymczasowego katalogu danych użytkownika, którego używa uruchomiony proces Chrome.
debuggerAddress ciąg znaków
Adres serwera debugera Chrome, z którym ma być nawiązane połączenie, w formacie <nazwa hosta/adres IP:port>, np. „127.0.0.1:38947”.
excludeSwitches lista ciągów tekstowych   Lista przełączników wiersza poleceń Chrome, które mają być wykluczone przez ChromeDriver podczas uruchamiania Chrome. Nie dołączaj prefiksu -- do przełączników.
minidumpPath ciąg znaków   Katalog do przechowywania minidumpów Chrome. (obsługiwane tylko w systemie Linux).
mobileEmulation słownik   Słownik z wartością „deviceName” lub wartościami „deviceMetrics” i „userAgent”. Więcej informacji znajdziesz w artykule Emulacja urządzeń mobilnych.
perfLoggingPrefs słownik   Opcjonalny słownik określający preferencje rejestrowania wydajności. Więcej informacji znajdziesz poniżej.
windowTypes lista ciągów tekstowych   Lista typów okien, które pojawiają się na liście uchwytów okien. Aby uzyskać dostęp do elementów webview, dodaj „webview” do tej listy.
enableExtensionTargets wartość logiczna fałsz Włącz introspekcję celów rozszerzenia do Chrome. Domyślnie ChromeDriver nie zawiera celów rozszerzenia (od wersji Chrome 136).

perfLoggingPrefs obiekt

Słownik perfLoggingPrefs ma następujący format. Wszystkie klucze są opcjonalne:

Nazwa Typ Domyślny Opis
enableNetwork wartość logiczna prawda Określa, czy zdarzenia mają być zbierane z domeny sieci.
enablePage wartość logiczna prawda Określa, czy mają być zbierane zdarzenia z domeny strony.
traceCategories ciąg znaków (puste) Oddzielony przecinkami ciąg tekstowy z kategoriami śledzenia w Chrome, dla których mają być zbierane zdarzenia śledzenia. Nieokreślony lub pusty ciąg znaków powoduje wyłączenie śledzenia.
bufferUsageReportingInterval dodatnia liczba całkowita 1000 Wymagana liczba milisekund między zdarzeniami użycia bufora śledzenia DevTools. Jeśli np. jest to 1000, to raz na sekundę DevTools informuje, jak pełny jest bufor śladu. Jeśli raport wskazuje, że wykorzystanie bufora wynosi 100%, pojawia się ostrzeżenie.

Zwrócone możliwości

Oto lista wszystkich zwracanych przez Chrome funkcji, czyli tego, co zwraca obiekt ChromeDriver, gdy tworzysz nową sesję.

Nazwa Typ Opis
chrome.chromedriverVersion ciąg znaków wersja ChromeDriver
userDataDir ciąg znaków ścieżka do katalogu danych użytkownika używanego przez Chrome; znajduje się w słowniku „chrome”