الإمكانات و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)

روبي

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.الصحيح() في وقت قريب جدًا، قد يتم إنهاء 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);

الإمكانات المعروفة

يُرجى الاطّلاع على مستندات Seenium ومعيار 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 قاموس   قاموس يحتوي كل إدخال على اسم التفضيل وقيمته. يتم تطبيق هذه الإعدادات المفضّلة على ملف Local State في مجلد بيانات المستخدمين.
prefs قاموس   قاموس يحتوي كل إدخال على اسم التفضيل وقيمته. لا يتم تطبيق هذه الإعدادات المفضَّلة إلا على ملف المستخدم الشخصي المستخدَم. الاطّلاع على "الإعدادات المفضّلة" ملف في دليل بيانات مستخدم Chrome للحصول على أمثلة.
detach منطقي خطأ في حال اختيار القيمة "false"، سيتم إنهاء Chrome عند إنهاء ChromeDriver، بغض النظر عمّا إذا تم إنهاء الجلسة أم لا. في حال اختيار القيمة "صحيح"، سيتم إغلاق Chrome فقط في حال تم إنهاء الجلسة (أو إغلاقها). يُرجى ملاحظة أنّه في حال اختيار القيمة "صحيح"، ولم يتم إنهاء الجلسة، لا يمكن لأداة 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 على التنسيق التالي (جميع المفاتيح اختيارية):

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

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

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

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