Özellikler ve ChromeOptions

Özellikler, bir ChromeDriver oturumunu özelleştirmek ve yapılandırmak için kullanabileceğiniz seçeneklerdir. Bu sayfada, ChromeDriver'ın desteklediği tüm özellikler ve bunların nasıl kullanılacağı açıklanmaktadır.

WebDriver dil API'leri, özellikleri ChromeDriver'a geçirme yolları sağlar. Kullanılan mekanizma dile göre değişir, ancak çoğu dilde aşağıdaki mekanizmalardan biri veya her ikisi birden kullanılır:

  1. ChromeOptions sınıfını kullanın. Bu komut, Java, Python vb. tarafından desteklenir.
  2. DesiredCapabilities sınıfını kullanın. Bu; Python, Ruby vb. tarafından desteklenir. Java'da da kullanılabilir ancak Java'da kullanımı kullanımdan kaldırılmıştır.

ChromeOptions sınıfını kullanma

ChromeDriver'a özgü özellikleri ayarlamak için uygun yöntemler içeren bir ChromeOptions örneği oluşturabilirsiniz. Daha sonra, ChromeOptions nesnesini ChromeDriver oluşturucuya geçirebilirsiniz:

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

Selenium 3.6.0 sürümünden itibaren, Java'daki ChromeOptions sınıfı Capabilities arayüzünü de uygular ve böylece ChromeDriver'a özgü olmayan diğer WebDriver özelliklerini belirtmenize olanak tanır.

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

DesiredCapabilities'i kullanma

DesiredCapabilities kullanmak için işlevin adını ve gereken değer türünü bilmeniz gerekir. Tam listeye buradan ulaşabilirsiniz.

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

Yaygın kullanım alanları

Özel profil kullan (kullanıcı verileri dizini olarak da adlandırılır)

Varsayılan olarak, ChromeDriver her oturum için yeni bir geçici profil oluşturur. Bazen özel tercihler ayarlamak veya tamamen özel bir profil kullanmak isteyebilirsiniz. Chrome başlatıldıktan sonra uygulanacak tercihleri belirtmek için "chrome.prefs" özelliğini (aşağıda daha sonra açıklanmıştır) kullanabilirsiniz. İkinci seçenek sunuluyorsa user-data-dir Chrome komut satırı anahtarını kullanarak Chrome'a hangi profilin kullanılacağını bildirebilirsiniz:

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

Chrome'u (komut satırında veya ChromeDriver üzerinden) user-data-dir anahtarı yeni bir dizine ayarlayarak çalıştırarak kendi özel profilinizi oluşturabilirsiniz. Yol mevcut değilse Chrome, belirtilen konumda yeni bir profil oluşturur. Daha sonra, profil ayarlarını istediğiniz gibi değiştirebilirsiniz ve ChromeDriver gelecekte bu profili kullanabilir. Chrome'un hangi profili kullandığını görmek için tarayıcıda chrome://version sayfasını açın.

Chrome'u ekranı kaplayacak şekilde başlat

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

Standart olmayan bir konumda çalıştırılabilir Chrome dosyası kullanma

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

İletişim pencerelerini engelleme

ChromeDriver, varsayılan olarak Chrome'u pop-up pencerelere izin verecek şekilde yapılandırır. Pop-up'ları engellemek (ör. ChromeDriver tarafından kontrol edilmediğinde normal Chrome davranışını geri yüklemek) istiyorsanız aşağıdakileri yapın:

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

İndirme dizinini ayarlar

Aşağıdaki kod, Chrome'u belirli bir dizine dosya indirecek şekilde yapılandırmak için kullanılabilir. Ancak, dikkat edilmesi gereken birkaç uyarı var:

  • Chrome, belirli dizinlerin indirme için kullanılmasına izin vermez. Özellikle, masaüstü klasörünü indirme dizini olarak kullanamazsınız. Linux'ta indirme işlemi için ana dizini de kullanamazsınız. Yasaklı dizinlerin tam listesi değişebileceğinden, sistem için özel bir anlamı olmayan bir dizin kullanmanız önerilir.
  • ChromeDriver, indirme işleminin tamamlanmasını otomatik olarak beklemez. drive.quit() çağrısını çok erken yaparsanız Chrome, indirme işlemi tamamlanmadan önce sonlandırılabilir.
  • Göreli yollar her zaman çalışmaz. En iyi sonuç için bunun yerine tam yolu kullanın.
  • Windows'da yol ayırıcı olarak "" karakterini kullanın. "/" kullanımı, Windows'da güvenilir değildir.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

Tanınan özellikler

ChromeDriver tarafından kabul edilen standart özellikler için lütfen Selenium dokümanlarına ve W3C WebDriver standardına göz atın. Burada yalnızca Chrome'a özgü özellikleri listeliyoruz.

ChromeOptions nesne

Chrome'a özgü özelliklerin çoğu ChromeOptions nesnesi aracılığıyla gösterilir. Bazı dillerde bu işlem ChromeOptions sınıfı tarafından uygulanır. Diğer dillerde, istenen özelliklerde goog:chromeOptions sözlüğü altında depolanır.

Ad Tür Varsayılan  Açıklama 
args  dize listesi   Chrome başlatılırken kullanılacak komut satırı bağımsız değişkenlerinin listesi. İlişkili değeri olan bağımsız değişkenler '=" işaretiyle ayrılmalıdır (ör. ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Chrome bağımsız değişkenlerinin listesini görmek için buraya göz atın.
binary dize   Kullanılacak Chrome yürütülebilir dosyasının yolu (Mac OS X'te bu, yalnızca uygulama değil, gerçek ikili program olmalıdır. Örneğin, "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome")
extensions dize listesi   Başlangıçta yüklenecek Chrome uzantılarının listesi. Listedeki her öğe, base 64 ile kodlanmış paketli bir Chrome uzantısı (.crx) olmalıdır
localState sözlük   Her girişi tercihin adı ve değerinden oluşan bir sözlük. Bu tercihler, kullanıcı verileri klasöründeki Yerel Durum dosyasına uygulanır.
prefs sözlük   Her girişi tercihin adı ve değerinden oluşan bir sözlük. Bu tercihler, yalnızca kullanımdaki kullanıcı profiline uygulanır. Örnekler için Chrome 'un kullanıcı verileri dizinindeki "Tercihler" dosyasına bakın.
detach boolean false False (yanlış) değerine ayarlanırsa ChromeDriver sonlandırıldığında, oturumdan çıkılıp çıkılmadığına bakılmaksızın Chrome'dan çıkılır. True (doğru) değerine ayarlanırsa Chrome'dan yalnızca oturumdan çıkılırsa (veya oturum kapatıldığında) çıkılır. Doğru değerine ayarlanırsa ve oturumdan çıkılmazsa ChromeDriver'ın, çalışan Chrome örneğinin kullandığı geçici kullanıcı verileri dizinini temizleyemeyeceğini unutmayın.
debuggerAddress dize
Bağlanılacak Chrome hata ayıklayıcı sunucusunun <anamakine/ip:bağlantı noktası> biçimindeki adresi, ör. "127.0.0.1:38947"
excludeSwitches dize listesi   Chrome'u başlatırken varsayılan olarak ChromeDriver'ı hariç tutan Chrome komut satırı anahtarlarının listesi. Anahtarların önüne -- ile eklemeyin.
minidumpPath  dize   Chrome mini dökümlerinin depolanacağı dizin . (Yalnızca Linux'ta desteklenir.)
mobileEmulation sözlük   "deviceName" değerini veya "deviceMetrics" ve "userAgent" için değerler içeren bir sözlük. Daha fazla bilgi için Mobil Emülasyon bölümüne bakın.
perfLoggingPrefs sözlük   Performans günlük kaydı tercihlerini belirten isteğe bağlı bir sözlük. Daha fazla bilgi için aşağıya göz atın.
windowTypes dize listesi   Pencere tutamaçları listesinde görünecek pencere türlerinin listesi. <webview> öğelerine erişim için bu listeye "webview" öğesini ekleyin.

perfLoggingPrefs nesne

perfLoggingPrefs sözlüğü aşağıdaki biçimdedir (tüm anahtarlar isteğe bağlıdır):

Ad Tür Varsayılan Açıklama
enableNetwork boolean true Ağ alanından etkinliklerin toplanıp toplanmayacağını belirtir.
enablePage boolean true Sayfa alanından etkinliklerin toplanıp toplanmayacağını belirtir.
traceCategories dize (boş) İzleme etkinliklerinin toplanması gereken Chrome izleme kategorilerinin virgülle ayrılmış bir dizesi. Belirtilmemiş veya boş bir dize, izlemeyi devre dışı bırakır.
bufferUsageReportingInterval pozitif tam sayı 1000 Geliştirici Araçları izleme arabellek kullanım etkinlikleri arasında istenen milisaniye sayısı. Örneğin, 1.000 değerse, ardından Geliştirici Araçları saniyede bir izleme arabelleğinin ne kadar dolu olduğunu bildirir. Raporda arabellek kullanımının %100 olduğu belirtilirse bir uyarı verilir.

Döndürülen Özellikler

Bu, Chrome'a özgü döndürülen tüm özelliklerin listesidir. (yani, yeni bir oturum oluşturduğunuzda ChromeDriver'ın döndürdüğü sonuç)

Ad Tür  Açıklama 
chrome.chromedriverVersion dize ChromeDriver sürümü
userDataDir dize Chrome'un kullandığı kullanıcı verileri dizininin yolu; bunun bir "chrome" sözlüğü içinde olduğunu unutmayın