الإمكانات و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، يجب معرفة اسم الإمكانية ونوع القيمة التي تأخذها. يمكنك الاطّلاع على القائمة الكاملة هنا.

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 إلى أقصى حدّ

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.check() في وقت قريب جدًا، قد يتم إنهاء Chrome قبل انتهاء عملية التنزيل.
  • لا تعمل المسارات النسبية في جميع الأحيان. للحصول على أفضل نتيجة، استخدِم المسار الكامل بدلاً من ذلك.
  • في نظام التشغيل Windows، يمكنك استخدام "" كفواصل للمسارات. استخدام "/" ليس موثوقًا به على نظام التشغيل Windows.
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 التنفيذي لاستخدامه (في نظام التشغيل Mac OS X، يجب أن يكون هذا هو البرنامج الثنائي الفعلي، وليس التطبيق فقط. مثلاً، "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome")
extensions قائمة بالسلاسل   قائمة بإضافات Chrome المطلوب تثبيتها عند بدء التشغيل يجب أن يكون كل عنصر في القائمة على شكل إضافة Chrome مضمّنة بترميز base-64 (.crx)
localState قاموس   يشير هذا المصطلح إلى قاموس يضم كل إدخال يتضمّن اسم الخيار المفضّل وقيمته. يتم تطبيق هذه الإعدادات المفضّلة على ملف "الحالة المحلية" في مجلد بيانات المستخدم.
prefs قاموس   يشير هذا المصطلح إلى قاموس يضم كل إدخال يتضمّن اسم الخيار المفضّل وقيمته. لا يتم تطبيق هذه الإعدادات المفضَّلة إلا على الملف الشخصي للمستخدم قيد الاستخدام. للحصول على أمثلة، اطّلِع على ملف "الإعدادات المفضّلة" في دليل بيانات مستخدم Chrome.
detach boolean خطأ في حال اختيار القيمة "false"، سيتم إنهاء Chrome عند إنهاء ChromeDriver، بغض النظر عما إذا تم إنهاء الجلسة أم لا. في حال اختيار "true"، لن يتم إنهاء Chrome إلا في حال إنهاء الجلسة (أو إغلاقها). لاحظ أنه في حال الضبط على "true" ولم يتم إنهاء الجلسة، لن يتمكن ChromeDriver من إزالة دليل بيانات المستخدم المؤقت الذي يستخدمه المثيل من Chrome قيد التشغيل.
debuggerAddress سلسلة
عنوان خادم تصحيح أخطاء Chrome المطلوب الاتصال به، في شكل <hostname/ip:port>، على سبيل المثال "127.0.0.1:38947"
excludeSwitches قائمة بالسلاسل   قائمة بمفاتيح تبديل سطر أوامر Chrome لاستبعاد برنامج ChromeDriver تلقائيًا عند بدء تشغيل Chrome. لا يتم تبديل البادئة باستخدام --.
minidumpPath  سلسلة   دليل تخزين الصور المصغّرة من Chrome . (مدعوم على Linux فقط.)
mobileEmulation قاموس   قاموس يتضمن قيمة "deviceName" أو قيم "deviceMetrics" و"userAgent". راجع محاكاة الأجهزة الجوّالة للحصول على مزيد من المعلومات.
perfLoggingPrefs قاموس   قاموسًا اختياري يحدّد الإعدادات المفضّلة لتسجيل الأداء انظر أدناه للاطّلاع على مزيد من المعلومات.
windowTypes قائمة السلاسل   قائمة بأنواع النوافذ التي ستظهر في قائمة مقابض النوافذ. للوصول إلى عناصر <webview>، قم بتضمين "webview" في هذه القائمة.

كائن "perfLoggingPrefs"

يحتوي قاموس perfLoggingPrefs على التنسيق التالي (وتكون جميع المفاتيح اختيارية):

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

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

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

الاسم النوع  الوصف 
chrome.chromedriverVersion سلسلة إصدار ChromeDriver
userDataDir سلسلة إلى دليل بيانات المستخدم الذي يستخدمه Chrome. ملاحظة: هذا في قاموس "chrome"