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 pastinya berbeda menurut bahasa, tetapi sebagian besar bahasa menggunakan salah satu atau kedua mekanisme berikut:

  1. Menggunakan class ChromeOptions. Ini didukung oleh Java, Python, dll.
  2. Menggunakan class DesiredCapabilities. Dukungan 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 menyetel kemampuan khusus ChromeDriver. Selanjutnya, Anda dapat meneruskan objek ChromeOptions ke dalam konstruktor ChromeDriver:

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

Mulai Selenium versi 3.6.0, class ChromeOptions di Java juga mengimplementasikan antarmuka Capabilities, sehingga Anda dapat menentukan kemampuan WebDriver lain yang tidak spesifik 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 lengkapnya di sini.

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 (juga disebut direktori data pengguna)

Secara default, ChromeDriver akan membuat profil sementara baru untuk setiap sesi. Terkadang Anda mungkin ingin menetapkan preferensi khusus atau hanya menggunakan profil khusus. Jika yang pertama, Anda dapat menggunakan kemampuan 'chrome.prefs' (dijelaskan nanti di bawah) untuk menentukan preferensi yang akan diterapkan setelah Chrome dimulai. Jika yang terakhir, 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");

Anda dapat membuat profil kustom sendiri cukup dengan menjalankan Chrome (di command line atau melalui ChromeDriver) dan tombol user-data-dir disetel ke beberapa direktori baru. Jika jalur tidak ada, Chrome akan membuat profil baru di lokasi yang ditentukan. Anda kemudian dapat mengubah setelan profil sesuai keinginan, dan ChromeDriver dapat menggunakan profil tersebut di masa mendatang. Buka chrome://version di browser untuk melihat profil yang digunakan Chrome.

Mulai Chrome yang dimaksimalkan

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

Menggunakan Chrome yang dapat dieksekusi 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 (misalnya, memulihkan perilaku Chrome normal saat tidak dikontrol oleh ChromeDriver), lakukan tindakan berikut:

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

Setel direktori download

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

  • Chrome tidak mengizinkan penggunaan direktori tertentu untuk didownload. Khususnya, Anda tidak dapat menggunakan folder desktop sebagai direktori download. Di Linux, Anda juga tidak dapat menggunakan direktori utama untuk mendownload. Karena daftar persis direktori yang dilarang dapat berubah, sebaiknya Anda menggunakan direktori 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 proses download selesai.
  • Jalur relatif tidak selalu berfungsi. Untuk hasil terbaik, gunakan jalur lengkap sebagai gantinya.
  • Di Windows, Gunakan "" sebagai pemisah jalur. Menggunakan "/" tidak dapat diandalkan di Windows.
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 dikenali

Lihat dokumentasi Sellenium dan standar WebDriver W3C untuk mengetahui kemampuan standar yang diterima oleh ChromeDriver. Di sini kami hanya mencantumkan kemampuan khusus Chrome.

Objek ChromeOptions

Sebagian besar kemampuan khusus Chrome diekspos melalui objek ChromeOptions. Dalam beberapa bahasa, hal ini diimplementasikan oleh class ChromeOptions. Dalam bahasa lain, peristiwa disimpan dalam kamus goog:chromeOptions dengan kemampuan yang diinginkan.

Name Jenis Default  Deskripsi 
args  daftar string   Daftar argumen command line yang dapat digunakan saat memulai Chrome. Argumen dengan nilai terkait harus dipisahkan dengan tanda '=' (misalnya, ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Lihat di sini untuk mengetahui daftar argumen Chrome.
binary string   Jalur ke Chrome yang dapat dijalankan (di Mac OS 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 paket berenkode 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 sedang digunakan. Lihat file 'Preferensi' di direktori data pengguna Chrome untuk mengetahui contohnya.
detach boolean false (salah) Jika disetel ke salah (false), Chrome akan dihentikan saat ChromeDriver dimatikan, terlepas dari apakah sesi dihentikan atau tidak. Jika benar, Chrome hanya akan berhenti jika sesi ditutup (atau ditutup). Perlu diketahui, jika true (benar), dan sesi tidak berhenti, ChromeDriver tidak dapat membersihkan direktori data pengguna sementara yang digunakan oleh instance Chrome yang sedang berjalan.
debuggerAddress string
Alamat server debugger Chrome yang akan dihubungkan, dalam bentuk <nama host/ip:port>, misalnya '127.0.0.1:38947'
excludeSwitches daftar string   Daftar command line Chrome dialihkan untuk mengecualikan ChromeDriver secara default saat memulai Chrome. Jangan beri awalan untuk tombol 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 akan muncul dalam daftar tuas jendela. Untuk akses ke elemen <webview>, sertakan "webview" dalam daftar ini.

Objek perfLoggingPrefs

Kamus perfLoggingPrefs memiliki format berikut (semua kunci bersifat opsional):

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

Kemampuan yang Ditampilkan

Ini adalah daftar semua kemampuan khusus Chrome yang ditampilkan. (yaitu yang ditampilkan ChromeDriver saat Anda membuat sesi baru)

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