Kemampuan dan ChromeOptions

Kemampuan adalah opsi yang dapat Anda gunakan untuk menyesuaikan dan mengonfigurasi sesi ChromeDriver. Halaman ini mendokumentasikan semua kemampuan yang didukung ChromeDriver dan cara menggunakannya.

API bahasa WebDriver menyediakan cara untuk meneruskan kemampuan ke ChromeDriver. Mekanisme yang tepat berbeda-beda menurut bahasa, tetapi sebagian besar bahasa menggunakan salah satu atau kedua mekanisme berikut:

  1. Gunakan class ChromeOptions. Hal ini didukung oleh Java, Python, dll.
  2. Gunakan class DesiredCapabilities. Hal ini didukung oleh Python, Ruby, dll. Meskipun juga tersedia di Java, penggunaannya di Java tidak digunakan lagi.

Menggunakan class ChromeOptions

Anda dapat membuat instance ChromeOptions, yang memiliki metode praktis untuk menetapkan kemampuan khusus ChromeDriver. Kemudian, Anda dapat meneruskan objek ChromeOptions ke konstruktor ChromeDriver:

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

Sejak Selenium versi 3.6.0, class ChromeOptions di Java juga mengimplementasikan antarmuka Capabilities, yang memungkinkan Anda menentukan kemampuan WebDriver lain yang tidak khusus untuk 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);

Menggunakan DesiredCapabilities

Untuk menggunakan DesiredCapabilities, Anda perlu mengetahui nama kemampuan dan jenis nilai yang diperlukan. Lihat daftar lengkap.

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

Kasus penggunaan umum

Menggunakan profil kustom

Secara default, ChromeDriver membuat profil sementara baru untuk setiap sesi. Anda mungkin ingin menetapkan preferensi khusus atau hanya menggunakan profil kustom secara keseluruhan, yang juga disebut direktori data pengguna.

Jika menggunakan profil sementara, Anda dapat menggunakan kemampuan chrome.prefs untuk menentukan preferensi yang akan diterapkan setelah Chrome dimulai. Untuk profil kustom, Anda dapat menggunakan tombol command line Chrome user-data-dir untuk memberi tahu Chrome profil mana yang akan digunakan:

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

Buat profil kustom Anda sendiri dengan menjalankan Chrome di command line atau dengan ChromeDriver, menggunakan tombol user-data-dir yang ditetapkan ke beberapa direktori baru.

Jika jalur tidak ada, Chrome akan membuat profil baru di lokasi yang ditentukan. Kemudian, Anda dapat mengubah setelan profil, dan ChromeDriver dapat menggunakan profil tersebut di masa mendatang. Buka chrome://version di browser untuk melihat profil yang digunakan Chrome.

Memulai Chrome dalam ukuran maksimal

Mulai Chrome yang dimaksimalkan menggunakan tombol start-maximized:

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

Menggunakan file yang dapat dieksekusi Chrome di lokasi non-standar

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

Memblokir jendela dialog

Secara default, ChromeDriver mengonfigurasi Chrome untuk mengizinkan jendela pop-up. Jika Anda ingin memblokir pop-up, dan memulihkan perilaku Chrome normal saat tidak dikontrol oleh ChromeDriver, lakukan tindakan berikut:

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

Menetapkan direktori download

Kode berikut dapat digunakan untuk mengonfigurasi Chrome agar mendownload file ke direktori tertentu. Namun, ada beberapa hal yang perlu diperhatikan:

  • Chrome tidak mengizinkan penggunaan direktori tertentu untuk download. Secara khusus, Anda tidak dapat menggunakan folder desktop sebagai direktori download. Di Linux, Anda tidak dapat menggunakan direktori utama untuk mendownload. Daftar persis direktori yang dilarang dapat berubah, jadi sebaiknya Anda menggunakan direktori unik yang tidak memiliki arti khusus bagi sistem.
  • ChromeDriver tidak otomatis menunggu download selesai. Jika Anda memanggil driver.quit() terlalu cepat, Chrome mungkin akan dihentikan sebelum download selesai.
  • Untuk hasil terbaik, gunakan jalur lengkap, karena jalur relatif tidak selalu berfungsi.
  • Di Windows, penggunaan \` as path separators./` tidak dapat diandalkan.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

Kemampuan yang dikenal

Baca dokumentasi Selenium dan standar WebDriver W3C untuk kemampuan standar yang diterima oleh ChromeDriver. Di sini, kami mencantumkan kemampuan khusus Chrome.

Objek ChromeOptions

Sebagian besar kemampuan khusus Chrome ditampilkan melalui objek ChromeOptions. Dalam beberapa bahasa, metode ini diterapkan oleh class ChromeOptions. Dalam bahasa lain, kata disimpan dalam kamus goog:chromeOptions dalam kemampuan yang dipilih.

Nama Jenis Default Deskripsi
args daftar string    Daftar argumen command line yang akan digunakan saat memulai Chrome. Argumen dengan nilai terkait harus dipisahkan dengan tanda '=' (seperti, ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Lihat daftar argumen Chrome.
binary string   Jalur ke Chrome yang dapat dijalankan yang akan digunakan.
Di macOS X, ini harus berupa biner yang sebenarnya, bukan hanya aplikasi, seperti, /Applications/Google Chrome.app/Contents/MacOS/Google Chrome.
extensions daftar string   Daftar ekstensi Chrome yang akan diinstal saat memulai. Setiap item dalam daftar harus berupa ekstensi Chrome yang dipaketkan dan dienkode base-64 (.crx)
localState kamus   Kamus dengan setiap entri yang terdiri dari nama preferensi dan nilainya. Preferensi ini diterapkan ke file Status Lokal di folder data pengguna.
prefs kamus   Kamus dengan setiap entri yang terdiri dari nama preferensi dan nilainya. Preferensi ini hanya diterapkan ke profil pengguna yang digunakan. Lihat file 'Preferences' di direktori data pengguna Chrome untuk mengetahui contohnya.
detach boolean false Jika salah, Chrome akan keluar saat ChromeDriver dihentikan, terlepas dari apakah sesi keluar atau tidak.
Jika benar, Chrome hanya akan keluar jika sesi keluar atau ditutup. Jika benar dan sesi tidak berhenti, ChromeDriver tidak dapat membersihkan direktori data pengguna sementara yang digunakan instance Chrome yang sedang berjalan.
debuggerAddress string 
Alamat server debugger Chrome yang akan dihubungkan, dalam bentuk <hostname/ip:port>, seperti '127.0.0.1:38947'
excludeSwitches daftar string    Daftar tombol command line Chrome untuk mengecualikan ChromeDriver yang secara default diteruskan saat memulai Chrome. Jangan beri awalan tombol akses dengan --.
minidumpPath string    Direktori untuk menyimpan minidump Chrome. (Hanya didukung di Linux.)
mobileEmulation kamus   Kamus dengan nilai untuk "deviceName", atau nilai untuk "deviceMetrics", dan "userAgent". Lihat Emulasi Seluler untuk informasi selengkapnya.
perfLoggingPrefs kamus   Kamus opsional yang menentukan preferensi logging performa. Lihat di bawah untuk informasi lebih lanjut.
windowTypes daftar string   Daftar jenis jendela yang muncul dalam daftar handle jendela. Untuk akses ke elemen webview, sertakan "webview" dalam daftar ini.
enableExtensionTargets boolean false Mengaktifkan introspeksi target Ekstensi Chrome. Secara default, ChromeDriver tidak menyertakan target ekstensi (dari Chrome 136).

Objek perfLoggingPrefs

Kamus perfLoggingPrefs memiliki format berikut. Semua kunci bersifat opsional:

Nama Jenis Default Deskripsi
enableNetwork boolean true Apakah akan mengumpulkan peristiwa dari domain Jaringan atau tidak.
enablePage boolean true Apakah akan mengumpulkan peristiwa dari domain Halaman atau tidak.
traceCategories string (kosong) String yang dipisahkan koma dari kategori pelacakan Chrome yang peristiwa pelacakannya harus dikumpulkan. String yang tidak ditentukan atau kosong akan menonaktifkan pelacakan.
bufferUsageReportingInterval bilangan bulat positif 1000 Jumlah milidetik yang diminta antara peristiwa penggunaan buffering rekaman aktivitas DevTools. Misalnya, jika 1.000, maka sekali per detik, DevTools akan melaporkan seberapa penuh buffering rekaman aktivitas. Jika laporan menunjukkan penggunaan buffering 100%, peringatan akan dikeluarkan.

Kemampuan yang Ditampilkan

Berikut adalah daftar semua kemampuan khusus Chrome yang ditampilkan, dengan kata lain, apa yang ditampilkan ChromeDriver saat Anda membuat sesi baru.

Nama Jenis Deskripsi
chrome.chromedriverVersion string versi ChromeDriver
userDataDir string jalur ke direktori data pengguna yang digunakan Chrome; perhatikan, ini ada di dalam kamus 'chrome'