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:
- Menggunakan class
ChromeOptions
. Ini didukung oleh Java, Python, dll. - 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.
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' |