Özellikler ve ChromeOptions

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

WebDriver dil API'leri, ChromeDriver'a özellik aktarmanın yollarını sağlar. Tam mekanizma dile göre değişir ancak çoğu dil aşağıdaki mekanizmalardan birini veya ikisini birden kullanır:

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

ChromeOptions sınıfını kullanma

ChromeDriver'a özgü özellikleri ayarlamak için kullanışlı yöntemlere sahip bir ChromeOptions örneği oluşturabilirsiniz. Ardından ChromeOptions nesnesini ChromeDriver kurucusuna iletebilirsiniz:

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 beri Java'daki ChromeOptions sınıfı, Capabilities arayüzünü de uygulayarak 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 işlevini kullanmak için özelliğin adını ve aldığı değer türünü bilmeniz gerekir. Tam listeyi inceleyin.

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 örnekleri

Özel profil kullanma

ChromeDriver, varsayılan olarak her oturum için yeni bir geçici profil oluşturur. Özel tercihler ayarlamak veya kullanıcı verileri dizini olarak da bilinen özel bir profil kullanmak isteyebilirsiniz.

Geçici profili kullanıyorsanız Chrome'un başlatılmasından sonra uygulanacak tercihleri belirtmek için chrome.prefs özelliğini kullanabilirsiniz. Özel profiller için Chrome'a hangi profili kullanacağını belirtmek üzere user-data-dir Chrome komut satırı anahtarını kullanabilirsiniz:

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

Chrome'u komut satırında veya ChromeDriver ile çalıştırarak user-data-dir anahtarını yeni bir dizine ayarlayarak kendi özel profilinizi oluşturun.

Yol yoksa Chrome, belirtilen konumda yeni bir profil oluşturur. Ardından, profil ayarlarını değiştirebilirsiniz. ChromeDriver, profili gelecekte kullanabilir. Chrome'un hangi profili kullandığını görmek için tarayıcıda chrome://version simgesini açın.

Chrome'u tam ekran başlatma

start-maximized anahtarını kullanarak Chrome'u tam ekran başlatın:

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

Standart olmayan bir konumda Chrome yürütülebilir dosyasını kullanma

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

İletişim kutusu pencerelerini engelleme

ChromeDriver, Chrome'u varsayılan olarak pop-up pencerelere izin verecek şekilde yapılandırır. Pop-up'ları engellemek ve 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 ayarlama

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

  • Chrome, indirme için belirli dizinlerin kullanılmasına izin vermez. Özellikle, indirme dizini olarak masaüstü klasörünü kullanamazsınız. Linux'ta indirme için ana dizini kullanamazsınız. Yasaklanmış dizinlerin tam listesi değişebilir. Bu nedenle, sistem için özel bir anlamı olmayan benzersiz bir dizin kullanmanızı öneririz.
  • ChromeDriver, indirme işleminin tamamlanmasını otomatik olarak beklemez. driver.quit() işlevini çok erken çağırırsanız Chrome, indirme işlemi tamamlanmadan sonlandırılabilir.
  • Göreli yollar her zaman çalışmadığından en iyi sonuçlar için tam yollar kullanın.
  • Windows'da \` as path separators./` kullanmayın.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

Tanınmış özellikler

ChromeDriver tarafından kabul edilen standart özellikler için Selenium dokümanlarını ve W3C WebDriver standardını okuyun. Burada, Chrome'a özgü özellikleri listeledik.

ChromeOptions nesnesi

Chrome'a özgü özelliklerin çoğu ChromeOptions nesnesi aracılığıyla sunulur. Bazı dillerde bu sınıflar ChromeOptions sınıfı tarafından uygulanır. Diğer dillerde, seçili özelliklerde goog:chromeOptions sözlüğünün altında depolanır.

Ad Tür Varsayılan Açıklama
args dize listesi    Chrome'u başlatırken kullanılacak komut satırı bağımsız değişkenlerinin listesi. İlişkili bir değere sahip 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 listesine bakın.
binary dize   Kullanılacak Chrome yürütülebilir dosyasının yolu.
macOS X'te bu, yalnızca uygulama değil, /Applications/Google Chrome.app/Contents/MacOS/Google Chrome gibi gerçek ikili dosya olmalıdır.
extensions dize listesi   Başlangıçta yüklenecek Chrome uzantılarının listesi. Listedeki her öğe, base64 kodlu sıkıştırılmış bir Chrome uzantısı (.crx) olmalıdır.
localState sözlük   Her girişi tercihin adından 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ından ve değerinden oluşan bir sözlük. Bu tercihler yalnızca kullanılan kullanıcı profiline uygulanır. Örnekler için Chrome 'un kullanıcı verileri dizininde bulunan "Tercihler" dosyasına bakın.
detach boolean yanlış Yanlış ise ChromeDriver sonlandırıldığında Chrome, oturumun kapatılıp kapatılmadığına bakılmaksızın kapatılır.
Bu değer doğruysa Chrome yalnızca oturum kapatıldığında veya kapandığında kapanır. Bu değer doğruysa ve oturum kapatılmazsa ChromeDriver, çalışan Chrome örneğinin kullandığı geçici kullanıcı verileri dizinini temizleyemez.
debuggerAddress dize
<hostname/ip:port> biçiminde (ör. "127.0.0.1:38947") bağlanılacak bir Chrome hata ayıklayıcı sunucusunun adresi
excludeSwitches dize listesi    Chrome'u başlatırken ChromeDriver'ın varsayılan olarak ilettiği ve hariç tutulacak Chrome komut satırı anahtarlarının listesi. Anahtarları -- ile öneklendirmeyin.
minidumpPath dize   Chrome minidump'lerinin depolanacağı dizin. (Yalnızca Linux'ta desteklenir.)
mobileEmulation sözlük   "deviceName" veya "deviceMetrics" ve "userAgent" değerlerinin yer aldığı bir sözlük. Daha fazla bilgi için Mobil Emülasyon başlıklı makaleyi inceleyin.
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ının listesinde görünen pencere türlerinin listesi. Web Görünümü öğelerine erişmek için bu listeye "webview"i ekleyin.
enableExtensionTargets boolean yanlış Chrome uzantısı hedeflerinin iç gözlemini etkinleştirin. ChromeDriver varsayılan olarak uzantı hedeflerini içermez (Chrome 136'dan itibaren).

perfLoggingPrefs nesnesi

perfLoggingPrefs sözlüğü aşağıdaki biçime sahiptir. Tüm anahtarlar isteğe bağlıdır:

Ad Tür Varsayılan Açıklama
enableNetwork boolean doğru Ağ alanından etkinlik toplanıp toplanmayacağı.
enablePage boolean doğru Sayfa alanından etkinlik toplanıp toplanmayacağı.
traceCategories dize (boş) İzleme etkinliklerinin toplanması gereken Chrome izleme kategorilerinin virgülle ayrılmış dizesi. Belirtilmemiş veya boş bir dize, izlemeyi devre dışı bırakır.
bufferUsageReportingInterval pozitif tam sayı 1000 DevTools izleme arabelleği kullanım etkinlikleri arasında istenen milisaniye sayısı. Örneğin, 1000 ise DevTools, izleme arabelleğinin ne kadar dolu olduğunu saniyede bir raporlar. Bir raporda arabellek kullanımının %100 olduğunu gösterirse uyarı verilir.

İade Edilen Özellikler

Chrome'a özgü döndürülen tüm özelliklerin, yani yeni bir oturum oluşturduğunuzda ChromeDriver'ın döndürdüğü değerlerin listesi aşağıda verilmiştir.

Ad Tür Açıklama
chrome.chromedriverVersion dize sürümünü kullanmanız gerekir.
userDataDir dize Chrome'un kullandığı kullanıcı verileri dizininin yolu; bunun bir "chrome" sözlüğünde yer aldığını unutmayın