Selenium Firefox الملف الشخصي: دليل الإعداد
⚡ ملخص ذكي
Firefox يخزن ملف تعريف المستخدم الإشارات المرجعية وكلمات المرور والإضافات والتفضيلات الخاصة بمستخدم متصفح واحد، و Selenium يستطيع برنامج WebDriver تحميل ملف تعريف مخصص بحيث تبدأ كل عملية تشغيل تلقائية من حالة متصفح متطابقة ويمكن التنبؤ بها.
Selenium Firefox نبذة عن الشركة
Firefox الملف الشخصي عبارة عن مجموعة من الإعدادات والتخصيص والوظائف الإضافية وإعدادات التخصيص الأخرى التي يمكن إجراؤها على Firefox Browser. يمكنك تخصيص Firefox الملف الشخصي الذي يناسبك Selenium متطلبات الأتمتة.
أيضا، Firefox أو أي متصفح آخر يتعامل مع إعدادات شهادات SSL. لذا فإن أتمتة هذه العمليات أمر منطقي إلى جانب رمز تنفيذ الاختبار.
باختصار، الملف الشخصي هو الإعدادات الشخصية للمستخدم. عندما تريد تشغيل نظام موثوق الأتمتة على Firefox يُنصح بإنشاء ملف تعريف منفصل عند استخدام متصفح معين. كما يحافظ ملف التعريف المخصص على بيانات تصفحك اليومية بعيدة عن الاختبار، وهو أول ما يجب استبعاده عند إجراء الاختبار. Selenium يتصرف البرنامج النصي بشكل مختلف على جهازين.
موقع مجلد ملف التعريف الخاص بك في القرص
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
يجب أن يبدو مربع حوار التشغيل كما في لقطة الشاشة أدناه قبل الضغط على "موافق".
ملاحظة: إذا لم يفتح، يمكنك محاولة استخدام المسار الكامل المحاط بعلامات اقتباس.
- على 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 سيتم فتحه، كما هو موضح أدناه.
الخطوة 4) خلق الملف
حدد خيار إنشاء ملف تعريف الموضح في لقطة الشاشة التالية لبدء المعالج.
الآن، حدد خيار إنشاء ملف تعريف من النافذة، وسيتم فتح المعالج. انقر على التالي.
الخطوة 5) أعط اسم ملفك الشخصي
اكتب اسمًا لملف تعريف التشغيل الآلي في الحقل المظلل أدناه وأكمل المعالج.
الآن أصبح ملف التعريف الخاص بك جاهزًا، يمكنك تحديد ملف التعريف الخاص بك وفتحه 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
يقوم المثال الأول بتحميل ملف تعريف بالاسم. تُظهر لقطة الشاشة أدناه نفس البرنامج النصي داخل المحرر.
// 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 ويشير إلى مجلد الملف الشخصي مباشرة، كما توضح لقطة شاشة المحرر.
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 عادة ما يكون هذا هو الطريق الأسرع من تلك النقطة.







