Selenium Firefox الملف الشخصي: دليل الإعداد

⚡ ملخص ذكي

Firefox يخزن ملف تعريف المستخدم الإشارات المرجعية وكلمات المرور والإضافات والتفضيلات الخاصة بمستخدم متصفح واحد، و Selenium يستطيع برنامج WebDriver تحميل ملف تعريف مخصص بحيث تبدأ كل عملية تشغيل تلقائية من حالة متصفح متطابقة ويمكن التنبؤ بها.

  • 🔘 معلومات أساسية عن الملف الشخصي: A Firefox يحتوي الملف الشخصي على إشارات مرجعية وكلمات مرور محفوظة وإضافات وشهادات وتفضيلات مستخدم واحد في مجلد واحد.
  • ☑️ موقع الملف الشخصي: Windowsو Linux و macOS يحتوي كل مجلد من مجلدات ملفات تعريف المتجر على مسار مختلف داخل دليل المستخدم.
  • ✅ إنشاء الملف الشخصي: يفتح مدير الملفات الشخصية المدمج باستخدام firefox.exe -p ويقوم بإنشاء ملف تعريف أتمتة نظيف في خمس خطوات.
  • 🧪 Code التمكن من: تقرأ فئة ProfilesIni ملف profiles.ini، وتعيد الدالة getProfile الملف الشخصي المسمى كـ Firefoxكائن الملف الشخصي.
  • 🛠️ الصيغة الحالية: Selenium 3 و 4 يمرران الملف الشخصي من خلال FirefoxOptions.setProfile بدلاً من Firefoxمُنشئ برنامج التشغيل.
  • ⚠️ التفضيلات: يتحكم setPreference في مجلد التنزيل والإشعارات واللغة ومعالجة الشهادات قبل تشغيل المتصفح.

Selenium Firefox دليل إعداد الملف الشخصي

Selenium Firefox نبذة عن الشركة

Firefox الملف الشخصي عبارة عن مجموعة من الإعدادات والتخصيص والوظائف الإضافية وإعدادات التخصيص الأخرى التي يمكن إجراؤها على Firefox Browser. يمكنك تخصيص Firefox الملف الشخصي الذي يناسبك Selenium متطلبات الأتمتة.

أيضا، Firefox أو أي متصفح آخر يتعامل مع إعدادات شهادات SSL. لذا فإن أتمتة هذه العمليات أمر منطقي إلى جانب رمز تنفيذ الاختبار.

باختصار، الملف الشخصي هو الإعدادات الشخصية للمستخدم. عندما تريد تشغيل نظام موثوق الأتمتة على Firefox يُنصح بإنشاء ملف تعريف منفصل عند استخدام متصفح معين. كما يحافظ ملف التعريف المخصص على بيانات تصفحك اليومية بعيدة عن الاختبار، وهو أول ما يجب استبعاده عند إجراء الاختبار. Selenium يتصرف البرنامج النصي بشكل مختلف على جهازين.

موقع مجلد ملف التعريف الخاص بك في القرص

Firefox الملف الشخصي يشبه تمامًا استخدام المستخدمين المختلفين Firefox. Firefox يحفظ المعلومات الشخصية مثل الإشارات المرجعية وكلمات المرور وتفضيلات المستخدم والتي يمكن تعديلها أو حذفها أو إنشاؤها باستخدام مدير الملف الشخصي.

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

Firefox يظهر مجلد الملف الشخصي على القرص مع بادئته العشوائية

موقع الملف الشخصي هو كما يلي

  • في عمل Windows > C:\Users\ \AppData\Roaming\Mozilla\Firefox\Profiles\profile_name.default
  • في عمل لينكس > ~/.mozilla/firefox/profile_name.default/
  • لنظام التشغيل Mac OS X > ~/Library/Application Support/Firefox/الملفات الشخصية/profile_name.default/

من أجل تشغيل ناجح Selenium اختبار، أ Firefox يجب أن يكون الملف الشخصي -

  • من السهل تحميل
  • إعدادات الوكيل إذا لزم الأمر
  • الإعدادات الأخرى الخاصة بالمستخدم بناءً على احتياجات الأتمتة

كيفية التعيين Firefox الملف الشخصي ل Selenium اختبارات

دعونا نرى خطوة بخطوة كيفية إنشاء Firefox الملف الشخصي.

الخطوة 1) أقفل ال Firefox المتصفح

في الخطوة الأولى، أغلق Firefox إذا كان مفتوحًا بالفعل. لن يبدأ مدير الملفات الشخصية أثناء تشغيله. Firefox النافذة قيد التشغيل.

الخطوة 2) تشغيل مفتوح (Windows مفتاح + R) واكتب firefox.exe –p

يجب أن يبدو مربع حوار التشغيل كما في لقطة الشاشة أدناه قبل الضغط على "موافق".

Windows قم بتشغيل مربع الحوار باستخدام الأمر firefox.exe -p المكتوب في

ملاحظة: إذا لم يفتح، يمكنك محاولة استخدام المسار الكامل المحاط بعلامات اقتباس.

  • على 32 بت Windows: "C:\Program Files\Mozilla Firefox\firefox.exe” –p
  • على 64 بت Windows (32 بت Firefox): "C:\Program Files (x86)\Mozilla" Firefox\firefox.exe” –p

الخطوة 3) اختر ملف تعريف المستخدم

الآن، مربع حوار باسم Firefox سيتم فتحه، كما هو موضح أدناه.

Firefox اختر ملف تعريف المستخدم من مربع الحوار الذي يعرض الملفات الشخصية الموجودة

الخطوة 4) خلق الملف

حدد خيار إنشاء ملف تعريف الموضح في لقطة الشاشة التالية لبدء المعالج.

شاشة الترحيب في معالج إنشاء الملف الشخصي Firefox مدير الملفات الشخصية

الآن، حدد خيار إنشاء ملف تعريف من النافذة، وسيتم فتح المعالج. انقر على التالي.

الخطوة 5) أعط اسم ملفك الشخصي

اكتب اسمًا لملف تعريف التشغيل الآلي في الحقل المظلل أدناه وأكمل المعالج.

الدخول إلى عالم جديد Firefox اسم الملف الشخصي في معالج إنشاء الملف الشخصي

الآن أصبح ملف التعريف الخاص بك جاهزًا، يمكنك تحديد ملف التعريف الخاص بك وفتحه Firefoxمن هنا، يتصرف الملف الشخصي كأي جلسة متصفح أخرى، لذا أول شخصية WebDriver سيواجهها دون تغيير.

ستلاحظ أن الجديد Firefox لن تعرض النافذة أيًا من إشاراتك المرجعية وأيقوناتك المفضلة.

ملاحظة: سيتم تحميل الملف الشخصي الأخير المحدد تلقائيًا في الخطوة التالية Firefox يطلق. ستحتاج إلى إعادة تشغيل مدير الملفات الشخصية إذا كنت ترغب في تغيير الملفات الشخصية.

البرنامج النصي الآلي ل Selenium

بعد إنشاء الملف الشخصي، تتمثل الخطوة التالية في تحميله من خلال التعليمات البرمجية. للوصول إلى الملف الذي تم إنشاؤه حديثًا Firefox ملف تعريف في Selenium في اختبار برنامج WebDriver، نحتاج إلى استخدام فئة ProfilesIni المدمجة في WebDriver وطريقتها getProfile كما هو موضح أدناه.

⚠️ ملاحظة حول الإصدار: المقتطفات في هذا القسم هي الأصل Selenium النموذج 2. في الوضع الحالي Selenium يُطلق سراح الطبقة التي تعيش فيها org.openqa.selenium.firefox.ProfilesIni - لل .داخلي تم إسقاط الحزمة الفرعية - ويتم تسليم الملف الشخصي إلى السائق من خلال Firefoxالخيارات. انظر إلى Firefoxقسم الخيارات أدناه للاطلاع على المكافئ الحديث.

Selenium رمز للملف الشخصي

هذا رمز لتنفيذ ملف تعريف، والذي يمكن تضمينه في Selenium رمز.

ProfilesIni profile = new ProfilesIni();

// سيؤدي هذا إلى إنشاء كائن لـ Firefox البيانات الشخصية

FirefoxProfile myprofile = profile.getProfile("xyzProfile");

// سيؤدي هذا إلى تهيئة Firefox سائق

WebDriver driver = new FirefoxDriver(myprofile)

دعونا نرى كيفية تطبيق هذا الكود في الأمثلة التالية.

Firefox مثال الملف الشخصي 1

يقوم المثال الأول بتحميل ملف تعريف بالاسم. تُظهر لقطة الشاشة أدناه نفس البرنامج النصي داخل المحرر.

Firefox مثال على ملف تعريف 1: نص برمجي لتحميل ملف تعريف بالاسم في المحرر

// import the package
import java.io.File;
      import java.util.concurrent.TimeUnit;
      import org.openqa.selenium.WebDriver;
      import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;
public class FirefoxProfile {
 	public static void main(String[] args) {
	ProfilesIni profile = new ProfilesIni();
	FirefoxProfile myprofile = profile.getProfile("xyzProfile");
// Initialize Firefox driver
	WebDriver driver = new FirefoxDriver(myprofile);
//Maximize browser window
	driver.manage().window().maximize();
//Go to URL which you want to navigate
	driver.get("http://www.google.com");
//Set  timeout  for 5 seconds so that the page may load properly within that time
	driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
//close firefox browser
	driver.close();
}

}

شرح للكود

وفيما يلي شرح سطر التعليمات البرمجية سطراً.

  • Code الأسطر من 2 إلى 7: أولاً وقبل كل شيء، نحتاج إلى استيراد الحزمة المطلوبة لتشغيل Selenium رمز.
  • Code السطر 8: أنشئ فئة عامة "Firefoxحساب تعريفي."
  • Code السطر 9: قم بإنشاء كائن (تحتاج إلى معرفة أساسية بمفاهيم البرمجة الكائنية).
  • Code السطران 10-11: نحتاج إلى التهيئة Firefox ملف تعريف مع كائن myprofile.
  • Code السطر 13: إنشاء كائن لـ Firefox.
  • Code السطر 15: تكبير النافذة.
  • Code السطر 17: يتم استخدام driver.get للتنقل إلى الموقع المحدد URL.
  • Code السطر 19: يتم استخدام set timeout للانتظار لبعض الوقت حتى يتمكن المتصفح من تحميل الصفحة قبل الانتقال إلى الصفحة التالية.
  • Code السطر 21: إغلاق Firefox.

دعونا نرى مثالاً آخر.

Firefox مثال الملف الشخصي 2

يتخطى المثال الثاني ملف profiles.ini ويشير إلى مجلد الملف الشخصي مباشرة، كما توضح لقطة شاشة المحرر.

Firefox مثال على ملف تعريف 2 يشير إلى البرنامج النصي Firefoxالملف الشخصي في مسار المجلد

import java.io.File;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;

public class FirefoxProfile2{
public static void main(String[] args) {

// Create object for FirefoxProfile
	FirefoxProfilemyprofile=newFirefoxProfile (newFile("\c:users\AppData\MozillaFirefoxProfile_name.default "));  
// Initialize Firefox driver    
	WebDriver driver = new FirefoxDriver(myprofile);
//Maximize browser window       
	driver.manage().window().maximize();
//Go to URL      
	driver.get("http://www.google.com");
//Set  timeout      
	driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
//close firefox browser  
	driver.close();
    }

شرح للكود

وفيما يلي شرح سطر التعليمات البرمجية سطراً.

  • Code الأسطر من 1 إلى 6: أولاً وقبل كل شيء، نحتاج إلى استيراد الحزمة المطلوبة لتشغيل Selenium رمز.
  • Code السطر 8: أنشئ فئة عامة Firefoxالملف الشخصي 2.
  • Code السطر 12: قم بإنشاء كائن myprofile عن طريق الإشارة إلى المسار المحدد.
  • Code السطر 14: إنشاء كائن لـ Firefox.
  • Code السطر 16: تكبير النافذة.
  • Code السطر 18: يتم استخدام driver.get للتنقل إلى الموقع المحدد URL.
  • Code السطر 20: يتم استخدام set timeout للانتظار لبعض الوقت حتى يتمكن المتصفح من تحميل الصفحة قبل الانتقال إلى الصفحة التالية.
  • Code السطر 22: إغلاق Firefox.

لاحظ أن المسار في هذا المقتطف مكتوب تمامًا كما هو موضح في البرنامج التعليمي الأصلي. على جهاز حقيقي، يجب وضع علامة هروب قبل علامات الخط المائل العكسي، على سبيل المثال "C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\xyzProfile.default”.

كيفية استخدام أ Firefox لمحات في Selenium 4 مع Firefoxمزيد من الخيارات

كلا المثالين أعلاه لا يتم تجميعهما إلا ضد Selenium 2. تغير شيئان بعد ذلك، وتستخدم جميع الدروس التعليمية الحالية الشكل الأحدث.

  • انتقلت شركة ProfilesIni من داخلي الحزمة الفرعية، لذا فإن الاستيراد الآن هو org.openqa.selenium.firefox.ProfilesIni.
  • استخدم Firefoxسائق (Firefoxتمت إزالة مُنشئ الملف الشخصي. الملف الشخصي مُرفق بـ Firefoxيتم تمرير كائن الخيارات إلى برنامج التشغيل.
  • Selenium 4 مهلات تأخذ java.time.Duration بدلاً من قيمة بالإضافة إلى TimeUnit، لذا يصبح implicitlyWait(5, TimeUnit.SECONDS) هو implicitlyWait(Duration.ofSeconds(5)).

يوضح الجدول أدناه العلاقة بين كل استدعاء قديم وبديله.

مكالمة الإرث (Selenium 2) المكالمة الحالية (Selenium 3 و 4)
استيراد org.openqa.selenium.firefox.internal.ProfilesIni؛ استيراد org.openqa.selenium.firefox.ProfilesIni؛
جديد Firefoxالسائق (ملفي الشخصي) options.setProfile(myprofile); new Firefoxخيارات برنامج التشغيل
انتظر ضمنيًا (5، TimeUnit.SECONDS) انتظر ضمنيًا (مدة.الثواني(5))
System.setProperty لـ geckodriver تم حل المشكلة تلقائياً بواسطة Selenium كلمة المدير

بعد إعادة كتابته وفقًا للإصدار الحالي، يبدو المثال 1 كما يلي.

import java.time.Duration;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.ProfilesIni;

public class FirefoxProfileSelenium4 {
    public static void main(String[] args) {
        ProfilesIni allProfiles = new ProfilesIni();
        FirefoxProfile myprofile = allProfiles.getProfile("xyzProfile");

        FirefoxOptions options = new FirefoxOptions();
        options.setProfile(myprofile);

        WebDriver driver = new FirefoxDriver(options);
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
        driver.get("https://www.google.com");
        driver.quit();
    }
}

لم يطرأ أي تغيير على عملية البحث عن الملف الشخصي: لا يزال ProfilesIni يقرأ ملف profiles.ini من Firefox لا يزال مجلد بيانات التطبيق ودالة getProfile تُرجعان قيمة فارغة (null) عندما لا يتطابق الاسم مع أي ملف تعريف، لذا يُنصح بإضافة فحص للتحقق من القيمة الفارغة قبل بدء تشغيل برنامج التشغيل. يحتوي كائن الخيارات نفسه أيضًا على الوسائط المستخدمة في أماكن أخرى، مثل تلك الخاصة بـ تكبير أو تغيير حجم نافذة المتصفح.

كيفية التعيين Firefox تفضيلات الملف الشخصي في Selenium

لا يمثل الملف الشخصي المحفوظ سوى نصف الحكاية. تتطلب معظم عمليات التشغيل الآلي تطبيق عدد قليل من التفضيلات برمجياً لضمان استمرار نفس السلوك على أي جهاز. تقوم دالة setPreference بكتابة هذه القيم في نسخة الملف الشخصي قبل Firefox تطلق.

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.dir", "C:\\selenium-downloads");
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");
profile.setPreference("dom.webnotifications.enabled", false);
profile.setPreference("intl.accept_languages", "es");

FirefoxOptions options = new FirefoxOptions();
options.setProfile(profile);
WebDriver driver = new FirefoxDriver(options);

تغطي التفضيلات أدناه الحالات التي تظهر في أغلب الأحيان في كتابة البرامج النصية اليومية.

التفضيل ما الذي يتحكم فيه
قائمة مجلدات التنزيل في المتصفح قم بتعيين القيمة إلى 2 لاستخدام مجلد تنزيل مخصص بدلاً من المجلد الافتراضي للنظام.
browser.download.dir المسار المطلق Firefox يحفظ التنزيلات في.
browser.helperApps.neverAsk.saveToDisk تم حفظ أنواع MIME دون عرض مربع حوار التنزيل.
إخطارات dom.webnotifications.enabled قم بتعيين القيمة إلى "خطأ" لكتم مطالبات إشعارات الويب.
intl.accept_languages رأس Accept-Language، مفيد لعمليات الترجمة.
عام. متخلف يستبدل سلسلة وكيل المستخدم التي يرسلها المتصفح.

هناك قيدان جديران بالمعرفة. يجب ضبط الإعدادات المفضلة قبل إنشاء برنامج التشغيل، لأن WebDriver ينسخ الملف الشخصي عند التشغيل، ويتم تجاهل التغييرات اللاحقة. كما يحتفظ WebDriver بمجموعة صغيرة من الإعدادات المفضلة التي يحتاجها للتواصل مع المتصفح، ويستبدلها بأي إعدادات تُعيّنها أنت. ولأن هذه القيم موجودة في الملف الشخصي وليس في البرنامج النصي، فإنها تنتقل أيضًا عبر المتصفح. اختبار عبر المتصفحات قم بتشغيله دون أي تغيير في كود الاختبار.

مشترك Firefox أخطاء في الملف الشخصي Selenium وكيفية اصلاحها

تظهر مشاكل الملف الشخصي عادةً على شكل خطأ في عملية التجميع أو فتح المتصفح بإعدادات خاطئة. يسرد الجدول حالات الفشل الأكثر شيوعًا، بالإضافة إلى أسباب كل منها.

عرض سبب حل
المنشئ Firefoxسائق (Firefoxالملف الشخصي) غير محدد تمت إزالة الدالة البانية بعد Selenium 2. قم بتغليف الملف الشخصي في Firefoxاستخدم الخيارات وقم بتمرير كائن الخيارات بدلاً من ذلك.
تعذر حل استيراد org.openqa.selenium.firefox.internal.ProfilesIni تم نقل الفئة خارج الحزمة الفرعية الداخلية. استيراد org.openqa.selenium.firefox.ProfilesIni.
NullPointerException على getProfile اسم الملف الشخصي لا يتطابق مع أي إدخال في ملف profiles.ini. أعد فتح مدير الملفات الشخصية وانسخ الاسم تمامًا، بما في ذلك حالة الأحرف.
إن Firefox لا يمكن تحميل الملف الشخصي. قد يكون مفقوداً أو غير قابل للوصول. آخر Firefox يحتوي هذا المثال بالفعل على الملف الشخصي، أو أن مسار المجلد خاطئ. أغلق كل Firefox ثم تحقق من المسار في النافذة مقابل المواقع المذكورة أعلاه.
لا يؤثر التفضيل تم تعيينه بعد بدء تشغيل برنامج التشغيل، أو أن برنامج WebDriver يحجزه. انقل كل استدعاء لـ setPreference إلى أعلى Firefoxمُنشئ برنامج التشغيل.

إذا بدأ المتصفح بشكل صحيح ولكن البرنامج النصي لا يزال يفشل بعد ذلك، فمن المحتمل ألا يكون الملف الشخصي هو السبب. العمل من خلال معالجة الاستثناءات في Selenium عادة ما يكون هذا هو الطريق الأسرع من تلك النقطة.

الأسئلة الشائعة

رقم Firefoxلا يقوم برنامج التشغيل بتعديل أي ملف تعريف موجود مسبقًا. بل يقوم بنسخ دليل ملف التعريف إلى موقع مؤقت، ويطبق الإعدادات التي يتطلبها برنامج تشغيل الويب، ثم يشغل المتصفح من تلك النسخة، وبالتالي تبقى إشاراتك المرجعية وكلمات مرورك المحفوظة دون تغيير.

نعم. أي إضافة مثبتة في الملف الشخصي تُحمّل مع المتصفح. يمكنك أيضًا استدعاء الدالة profile.addExtension(new File(“path/to/extension.xpi”)) لإضافة إضافة أثناء التشغيل، مما يحافظ على نظافة الملف الشخصي على القرص.

Python لا يوجد ما يعادله في ملف ProfilesIni. نقطة Firefoxقم بإنشاء ملف التعريف في دليل ملف التعريف، ثم قم بتعيينه إلى ملف options.profile قبل بناء برنامج التشغيل. Selenium Python ثم قم بنسخ هذا المجلد تمامًا كما هو موضح في قسم الربط. Java لا.

تقارن أدوات الاختبار المدعومة بالذكاء الاصطناعي الإعدادات المُسجلة في عمليات التشغيل الناجحة مع الملف الشخصي الحالي، وتُشير إلى أي تغييرات، مثل تغيير خادم وكيل أو مجلد تنزيل. كما تستخدم بعض الأطر البرمجية تقنيات التعلّم الآلي لاكتشاف أي خلل في الملف الشخصي قبل أن يتسبب في فشل عملية البناء.

مساعد الطيار جيثب يُنشئ القوالب الجاهزة بسرعة، ولكنه غالبًا ما يُصدر المحتوى المحذوف Firefoxسائق (Firefoxتم تعلم مُنشئ الملف الشخصي من التعليمات البرمجية القديمة. تأكد دائمًا من استخدام الاقتراح. Firefoxقم بتعيين ملف التعريف والحزمة الحالية قبل الالتزام بها.

نعم. استدعِ options.addArguments(“-headless”) مع options.setProfile(profile). يوفر الملف الشخصي التفضيلات والإضافات تمامًا كما كان من قبل، لأن وضع التشغيل بدون واجهة رسومية يغير فقط كيفية Firefox يعرض البرنامج نفسه، وليس كيفية قراءته لدليل ملف التعريف الخاص به.

لأن WebDriver يعمل على نسخة مؤقتة ويحذفها عند انتهاء الجلسة. للاحتفاظ بالتغييرات، عدّل الملف الشخصي يدويًا في مدير الملفات الشخصية، أو اضبط الإعدادات برمجيًا بحيث يبدأ كل تشغيل من نفس الحالة المعروفة.

ليس دائمًا، لكنه مفيد. إرفاق الملف الشخصي بـ Firefoxتقوم الخيارات بتضمين التفضيلات مع حمولة الإمكانيات، لذلك يقوم جهاز بعيد بتطبيق نفس مجلد التنزيلات والوكيل ومعالجة الشهادات كما يفعل جهازك المحلي.

تلخيص هذه التدوينة بـ: