الإمكانات وChromeOptions

الإمكانات هي خيارات يمكنك استخدامها لتخصيص جلسة ChromeDriver وضبطها. توثّق هذه الصفحة جميع الإمكانات المتوافقة مع ChromeDriver وكيفية استخدامها.

توفّر واجهات برمجة التطبيقات الخاصة بلغة WebDriver طرقًا لنقل الإمكانات إلى ChromeDriver. تختلف الآلية الدقيقة حسب اللغة، ولكن معظم اللغات تستخدم إحدى الآليتين التاليتَين أو كلتيهما:

  1. استخدِم فئة ChromeOptions. تتوفّر هذه الميزة في Java وPython وما إلى ذلك.
  2. استخدِم فئة DesiredCapabilities. تتيح لغة Python وRuby وغيرها من اللغات استخدام هذه الميزة. وعلى الرغم من توفّرها أيضًا في Java، إلا أنّ استخدامها في Java قد تم إيقافه نهائيًا.

استخدام فئة ChromeOptions

يمكنك إنشاء مثيل من ChromeOptions، الذي يتضمّن طُرقًا ملائمة لضبط الإمكانات الخاصة بخدمة ChromeDriver. يمكنك بعد ذلك تمرير ChromeOptions العنصر إلى منشئ ChromeDriver:

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

منذ الإصدار 3.6.0 من Selenium، تُنفِّذ فئة ChromeOptions في Java أيضًا واجهة Capabilities، ما يتيح لك تحديد ميزات WebDriver أخرى غير محصورة بـ 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);

استخدام DesiredCapabilities

لاستخدام DesiredCapabilities، عليك معرفة اسم الميزة و نوع القيمة التي تأخذها. يمكنك الاطّلاع على القائمة الكاملة.

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

حالات الاستخدام الشائعة

استخدام ملف شخصي مخصّص

ينشئ ChromeDriver تلقائيًا ملفًا شخصيًا مؤقتًا جديدًا لكل جلسة. قد تحتاج إلى ضبط إعدادات مفضّلة خاصة أو استخدام ملف شخصي مخصّص فقط، والذي يُعرف أيضًا باسم دليل بيانات المستخدم.

في حال استخدام الملف الشخصي المؤقت، يمكنك استخدام ميزة chrome.prefs لتحديد الإعدادات المفضّلة لتطبيقها بعد بدء Chrome. بالنسبة إلى الملفات الشخصية المخصّصة، يمكنك استخدام مفتاح التبديل user-data-dir في سطر أوامر Chrome لإعلام Chrome بالملف الشخصي الذي يجب استخدامه:

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

يمكنك إنشاء ملفك الشخصي المخصّص من خلال تشغيل Chrome على سطر الأوامر أو باستخدام ChromeDriver، باستخدام مفتاح التبديل user-data-dir الذي تم ضبطه على دليل جديد.

إذا لم يكن المسار متوفّرًا، ينشئ Chrome ملفًا شخصيًا جديدًا في الموقع المحدّد. يمكنك بعد ذلك تعديل إعدادات الملف الشخصي، ويمكن أن يستخدم ChromeDriverملف التعريف في المستقبل. افتح chrome://version في المتصفّح لمعرفة نوع الملف الشخصي الذي يستخدمه Chrome.

تشغيل Chrome في وضع ملء الشاشة

ابدأ Chrome في وضع ملء الشاشة باستخدام مفتاح التبديل start-maximized:

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

استخدام ملف قابل للتنفيذ في Chrome في موقع غير عادي

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

حظر نوافذ الحوار

يضبط ChromeDriver متصفّح Chrome تلقائيًا للسماح بالنوافذ المنبثقة. إذا أردت حظر النوافذ المنبثقة واستعادة السلوك العادي لمتصفّح Chrome عندما لا يتم التحكّم فيه من خلال ChromeDriver، اتّبِع الخطوات التالية:

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

تعيين دليل التنزيل

يمكن استخدام الرمز التالي لضبط Chrome لتنزيل الملفات إلى دليل معيّن. ومع ذلك، هناك عدة تحذيرات يجب أخذها بعين الاعتبار:

  • لا يسمح Chrome باستخدام أدلة معيّنة للتنزيل. وعلى وجه الخصوص، لا يمكنك استخدام مجلد سطح المكتب كدليل التنزيل. في نظام التشغيل Linux، لا يمكنك استخدام الدليل الرئيسي للتنزيل. إنّ القائمة الدقيقة للدلائل المحظورة قد تخضع للتغيير، لذا ننصحك باستخدام دليل فريد ليس له معنى خاص للنظام.
  • لا ينتظر ChromeDriver تلقائيًا اكتمال عملية التنزيل. إذا تم استدعاء دالة driver.quit() مبكرًا جدًا، قد يتم إنهاء Chrome قبل اكتمال عملية التنزيل.
  • للحصول على أفضل النتائج، استخدِم المسارات الكاملة، لأنّ المسارات النسبية لا تعمل دائمًا.
  • على نظام التشغيل Windows، استخدِم \` as path separators./` لأنّه غير موثوق به على هذا النظام.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

الإمكانات المعترف بها

اطّلِع على مستندات Selenium ومعيار W3C WebDriver للتعرّف على الوظائف المعيارية التي يقبلها ChromeDriver. في ما يلي قائمة بالميزات الخاصة بمتصفّح Chrome.

عنصر ChromeOptions

يتم عرض معظم الإمكانات الخاصة بمتصفّح Chrome من خلال عنصر ChromeOptions. في بعض اللغات، يتم تنفيذها من خلال فئة ChromeOptions. في اللغات الأخرى، يتم تخزينها ضمن قاموس goog:chromeOptions في الميزات المحدّدة.

الاسم النوع القيمة التلقائية الوصف
args قائمة السلاسل    قائمة وسيطات سطر الأوامر التي يجب استخدامها عند بدء Chrome يجب فصل الوسيطات التي لها قيمة مرتبطة بعلامة "=" (مثل ['start-maximized', 'user-data-dir=/tmp/temp_profile']). اطّلِع على قائمة بوسيطات Chrome.
binary سلسلة   المسار إلى ملف Chrome القابل للتنفيذ المطلوب استخدامه
على نظام التشغيل macOS X، يجب أن يكون هذا هو الملف الثنائي الفعلي، وليس التطبيق فقط، مثل /Applications/Google Chrome.app/Contents/MacOS/Google Chrome.
extensions قائمة السلاسل   قائمة بإضافات Chrome المطلوب تثبيتها عند بدء التشغيل يجب أن يكون كل عنصر في القائمة إضافة مُجمَّعة مشفَّرة بترميز base-64 في Chrome (‎.crx).
localState قاموس   قاموس يتضمّن كل إدخال اسم الإعداد المفضّل وقيمته يتم تطبيق هذه الإعدادات المفضّلة على ملف "الحالة المحلية" في مجلد بيانات المستخدم.
prefs قاموس   قاموس يتضمّن كل إدخال اسم الإعداد المفضّل وقيمته لا يتم تطبيق هذه الإعدادات المفضّلة إلا على الملف الشخصي للمستخدم المستخدَم. يمكنك الاطّلاع على ملف "الإعدادات المفضّلة" في دليل بيانات المستخدم في Chrome للحصول على أمثلة.
detach قيمة منطقية خطأ إذا كانت القيمة "خطأ"، يتم إغلاق Chrome عند إنهاء ChromeDriver، بغض النظر عمّا إذا تم إغلاق الجلسة.
إذا كانت القيمة "صحيح"، لن يتم إغلاق Chrome إلا إذا تم إغلاق الجلسة. إذا كان القيمة صحيحة ولم يتم إنهاء الجلسة، لا يمكن لـ ChromeDriver تنظيف دليل بيانات المستخدم المؤقت الذي تستخدمه نسخة Chrome المشغّلة.
debuggerAddress سلسلة 
عنوان خادم مصحِّح أخطاء Chrome المطلوب الاتصال به، بالتنسيق <hostname/ip:port>، مثل "127.0.0.1:38947"
excludeSwitches قائمة السلاسل    قائمة بتبديلات سطر أوامر Chrome لاستبعاد الإعدادات التي يمرّرها ChromeDriver تلقائيًا عند بدء Chrome لا تُدرِج البادئة -- قبل مفاتيح التبديل.
minidumpPath سلسلة    الدليل لتخزين ملفات dump المصغّرة في Chrome (تتوفّر هذه الميزة على نظام التشغيل Linux فقط).
mobileEmulation قاموس   قاموس يتضمّن قيمة "deviceName" أو قيمًا لكلّ من "deviceMetrics" و "userAgent" راجِع محاكاة الأجهزة الجوّالة للحصول على مزيد من المعلومات.
perfLoggingPrefs قاموس   قاموس اختياري يحدِّد الإعدادات المفضّلة لتسجيل الأداء انظر أدناه للاطّلاع على مزيد من المعلومات.
windowTypes قائمة السلاسل   قائمة بأنواع النوافذ التي تظهر في قائمة مقابض النوافذ للوصول إلى عناصر webview، أدرِج "webview" في هذه القائمة.
enableExtensionTargets قيمة منطقية خطأ فعِّل ميزة "الاستكشاف الذاتي" لاستهدافات إضافات Chrome. لا يتضمّن ChromeDriver تلقائيًا استهدافات الإضافات (بدءًا من الإصدار 136 من Chrome).

عنصر perfLoggingPrefs

يتضمّن قاموس perfLoggingPrefs التنسيق التالي. جميع المفاتيح اختيارية:

الاسم النوع القيمة التلقائية الوصف
enableNetwork قيمة منطقية صحيح ما إذا كان سيتم جمع الأحداث من نطاق الشبكة أم لا
enablePage قيمة منطقية صحيح ما إذا كان سيتم جمع الأحداث من نطاق الصفحة أم لا
traceCategories سلسلة (فارغ) سلسلة مفصولة بفواصل لفئات تتبُّع Chrome التي يجب جمع أحداث التتبُّع لها يؤدي استخدام سلسلة غير محدّدة أو فارغة إلى إيقاف التتبّع.
bufferUsageReportingInterval عدد صحيح موجب 1000 العدد المطلوب من المللي ثانية بين أحداث استخدام مخبّر التتبّع في DevTools على سبيل المثال، إذا كان العدد 1000، ستُبلغ أدوات المطوّرين مرة واحدة في الثانية عن مدى امتلاء مخبّر التتبّع. وإذا أشار التقرير إلى أنّ استخدام المخبّر هو %100، يتم إصدار تحذير.

الإمكانات التي تم إرجاعها

في ما يلي قائمة بجميع الإمكانات المعروضة والمرتبطة بمتصفّح Chrome، أي النتائج التي يعرضها ChromeDriver عند إنشاء جلسة جديدة.

الاسم النوع الوصف
chrome.chromedriverVersion سلسلة إصدار ChromeDriver
userDataDir سلسلة مسار دليل بيانات المستخدمين الذي يستخدمه Chrome، ويُرجى العِلم أنّ هذا المسار مضمّن في قاموس chrome