Funkcje i opcje Chrome

Uprawnienia to opcje, których możesz użyć, aby dostosować i skonfigurować sesję ChromeDriver. Na tej stronie opisujemy wszystkie funkcje ChromeDriver i informacje o tym, jak z nich korzystać.

Interfejsy API języka WebDriver umożliwiają przekazywanie możliwości do ChromeDriver. Dokładny mechanizm różni się w zależności od języka, ale w większości języków używany jest co najmniej jeden z tych mechanizmów:

  1. Użyj zajęć ChromeOptions. Ta funkcja jest obsługiwana przez Javę, Pythona itp.
  2. Użyj zajęć DesiredCapabilities. Ta funkcja jest obsługiwana przez Pythona, Ruby itp. Mimo że jest też dostępna w Javie, jej użycie w Javie zostało wycofane.

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 Selenium w wersji 3.6.0 klasa ChromeOptions w Javie implementuje również interfejs Capabilities, dzięki czemu można określić inne funkcje WebDriver, które nie są typowe dla 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);

Korzystanie z DesiredCapabilities

Aby użyć funkcji DesiredCapabilities, musisz znać nazwę funkcji i typ wartości, jaką pobiera ta funkcja. Pełną listę znajdziesz tutaj.

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 przypadki użycia

Używanie profilu niestandardowego (nazywanego też katalogiem danych użytkownika)

Domyślnie ChromeDriver tworzy nowy profil tymczasowy dla każdej sesji. Może się zdarzyć, że konieczne będzie skonfigurowanie specjalnych ustawień lub po prostu korzystanie z profilu niestandardowego. W pierwszym przypadku możesz użyć funkcji „chrome.prefs” (opisanej poniżej), aby określić preferencje, które zostaną zastosowane po uruchomieniu Chrome. W tym drugim przypadku możesz użyć przełącznika wiersza poleceń Chrome user-data-dir, aby wskazać Chrome, którego profilu ma używać:

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

Możesz utworzyć własny profil niestandardowy, uruchamiając Chrome (z wiersza poleceń lub za pomocą ChromeDriver) z przełącznikiem user-data-dir ustawionym na nowy katalog. Jeśli ścieżka nie istnieje, Chrome utworzy nowy profil w określonej lokalizacji. Następnie możesz zmodyfikować ustawienia profilu i w przyszłości używać tego profilu ChromeDriver. Aby sprawdzić, jakiego profilu używa Chrome, otwórz w przeglądarce stronę chrome://version.

Uruchom Chrome z maksymalizacją

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

Blokuj okna dialogowe

Domyślnie ChromeDriver konfiguruje wyskakujące okienka w Chrome. Jeśli chcesz zablokować wyskakujące okienka (tzn. przywrócić normalne działanie Chrome, gdy nie jest kontrolowane przez ChromeDriver), wykonaj te czynności:

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

Ustaw katalog pobierania

Poniższy kod pozwala skonfigurować w Chrome pobieranie plików do określonego katalogu. Pamiętaj jednak o kilku kwestiach:

  • Chrome nie zezwala na pobieranie niektórych katalogów. W szczególności nie można użyć folderu na komputerze jako katalogu pobierania. W systemie Linux nie można też pobrać pliku z katalogu domowego. Ponieważ dokładna lista zabronionych katalogów może ulec zmianie, zalecamy użycie katalogu, który nie ma specjalnego znaczenia dla systemu.
  • ChromeDriver nie czeka automatycznie na zakończenie pobierania. Jeśli przedwcześnie wywołasz sterownik.quit(), Chrome może zakończyć się przed zakończeniem pobierania.
  • Ścieżki względne nie zawsze działają. Aby uzyskać najlepszy wynik, użyj pełnej ścieżki.
  • W systemie Windows użyj „” jako separatora ścieżek. Używanie znaku „/” w systemie Windows nie działa prawidłowo.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

Znane możliwości

Informacje o standardowych funkcjach akceptowanych przez ChromeDriver znajdziesz w dokumentacji Seleniu i standardzie W3C WebDriver. Wymieniamy tu tylko możliwości Chrome.

ChromeOptions obiekt

Większość funkcji specyficznych dla Chrome jest ujawniana przez obiekt ChromeOptions. W niektórych językach jest to implementowane przez klasę ChromeOptions. W innych językach są one przechowywane w słowniku goog:chromeOptions w potrzebnych funkcjach.

Nazwa Typ Domyślne  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 „=” (np. ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Listę argumentów Chrome znajdziesz tutaj.
binary string,   Ścieżka do pliku wykonywalnego Chrome, którego chcesz użyć (w systemie Mac OS X powinien to być rzeczywisty plik binarny, a nie tylko aplikacja, na przykład „/Applications/Google Chrome.app/Contents/MacOS/Google Chrome”)
extensions lista ciągów tekstowych   Lista rozszerzeń Chrome do zainstalowania przy uruchamianiu. Każda pozycja na liście powinna być rozszerzeniem do Chrome (.crx) zakodowanym w standardzie base-64.
localState słownik   Słownik z każdą pozycją zawierającą nazwę ustawienia i jej wartość. Te ustawienia są stosowane do pliku lokalnego stanu w folderze danych użytkownika.
prefs słownik   Słownik z każdą pozycją zawierającą nazwę ustawienia i jej wartość. Te ustawienia są stosowane tylko do używanego profilu użytkownika. Przykłady znajdziesz w pliku „Preferences” (Ustawienia) w katalogu danych użytkownika Chrome.
detach boolean false (fałsz) Jeśli zasada ma wartość Fałsz, po zamknięciu ChromeDriver przeglądarka Chrome zostanie zamknięta niezależnie od tego, czy sesja zostanie zakończona. Jeśli ma wartość true (prawda), Chrome zakończy działanie tylko w przypadku zakończenia sesji (lub jej zamknięcia). Pamiętaj, że jeśli ma wartość true, a sesja nie zostanie zamknięta, ChromeDriver nie może wyczyścić tymczasowego katalogu danych użytkownika używanego przez uruchomioną instancję Chrome.
debuggerAddress string,
Adres serwera debugera Chrome, z którym należy się połączyć, w postaci <nazwa_hosta/ip:port>, np. „127.0.0.1:38947”.
excludeSwitches lista ciągów tekstowych   Lista przełączników w wierszu poleceń Chrome, które wykluczają, że ChromeDriver domyślnie przekazuje plik podczas uruchamiania Chrome. Nie wybieraj prefiksu na przełącznikach „-”.
minidumpPath  string,   Katalog, w którym będą przechowywane minidumpy Chrome . (Obsługiwana 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 na temat emulacji mobilnej.
perfLoggingPrefs słownik   Opcjonalny słownik określający ustawienia rejestrowania wydajności. Więcej informacji znajdziesz poniżej.
windowTypes lista ciągów tekstowych   Lista typów okien widoczna na liście uchwytów. Aby mieć dostęp do elementów <webview>, dodaj do tej listy element „webview”.

perfLoggingPrefs obiekt

Słownik perfLoggingPrefs ma następujący format (wszystkie klucze są opcjonalne):

Nazwa Typ Domyślne Opis
enableNetwork boolean prawda Określa, czy zdarzenia z domeny sieci mają być zbierane.
enablePage boolean prawda Określa, czy rejestrować zdarzenia z domeny strony.
traceCategories ciąg znaków (puste) Ciąg znaków zawierający rozdzielone przecinkami kategorie śledzenia Chrome, dla których mają być gromadzone zdarzenia śledzenia. Nieokreślony lub pusty ciąg znaków wyłącza śledzenie.
bufferUsageReportingInterval dodatnia liczba całkowita 1000 Żądana liczba milisekund między zdarzeniami wykorzystania bufora śledzenia w Narzędziach deweloperskich. Jeśli na przykład wartość 1000 to 1000, to Narzędzia deweloperskie będą informowały Cię o stanie bufora śledzenia raz na sekundę. Jeśli raport wskaże, że wykorzystanie bufora wynosi 100%, pojawi się ostrzeżenie.

Zwrócone zdolności

To jest lista wszystkich zwróconych funkcji Chrome. (tj. co zwraca ChromeDriver, gdy utworzysz nową sesję)

Nazwa Typ  Opis 
chrome.chromedriverVersion string, ChromeDriver
userDataDir string, Ścieżka do katalogu danych użytkownika używanego przez Chrome; uwaga: to jest słownik „chrome”