متصفح بلا رأس Selenium (HTMLUnitDriver)
المتصفح بدون رأس هو متصفح ويب بدون واجهة مستخدم رسومية. يمكن تشغيله في الخلفية دون تشتيت الانتباه البصري. فهو يوفر طريقة فعالة وفعالة لاختبار تطبيقات الويب مع توفير الوقت والموارد. في هذا البرنامج التعليمي، سوف نتعمق في ماهية المتصفح بدون رأس، ومتى نستخدم اختبار المتصفح بدون رأس، وكيفية إجرائه باستخدام Selenium.
ما هو متصفح مقطوعة الرأس؟
المتصفح بدون رأس هو متصفح ويب بدون واجهة مستخدم رسومية. سيعمل هذا البرنامج تمامًا مثل المتصفح ولكنه لن يُظهر أي واجهة مستخدم رسومية.
تتضمن بعض الأمثلة على السائقين مقطوعي الرأس
- htmlUnit
- شبح
- PhantomJS
- ZombieJS
- Watir-برنامج تشغيل الويب
متى يجب استخدام اختبار المتصفح بدون رأس؟
في العصر الرقمي الحالي، يتم تطوير تطبيقات الويب لتكون متوافقة مع مجموعة واسعة من الأجهزة والمنصات. غالبًا ما يمثل هذا تحديًا لمطوري مواقع الويب الذين يحتاجون إلى ضمان عمل تطبيقاتهم بسلاسة عبر هذه المنصات. يعد اختبار المتصفح بدون واجهة مستخدم حلاً مثاليًا لهذه المشكلة لأنه يسمح للمطورين باختبار تطبيقات الويب الخاصة بهم دون الحاجة إلى واجهة مستخدم رسومية. باستخدام اختبار المتصفح بدون واجهة مستخدم، يمكن للمطورين اختبار تطبيقات الويب المعقدة بسهولة مع مكونات وتبعيات متعددة، مما يمهد الطريق لتطوير أسرع وكود خالٍ من الأخطاء ومستخدمين سعداء.
اختبار المتصفح بدون رأس مع Selenium
Selenium أداة قوية لاختبار المتصفح بدون واجهة مستخدم، مما يسمح للمطورين بتشغيل اختبارات آلية دون الحاجة إلى واجهة مستخدم مرئية. من خلال تشغيل الاختبارات في الخلفية، Selenium يمكن أن يوفر الوقت والموارد بينما يساعد أيضًا في تحديد المشكلات التي قد لا تكون واضحة في بيئة الاختبار التقليدية القائمة على واجهة المستخدم. يتضمن ذلك المشكلات المتعلقة بالأداء ومشكلات التخطيط التي قد تصبح واضحة فقط في الإعداد بدون رأس. ومع ذلك، من المهم أن تضع في اعتبارك القيود المفروضة على الاختبار بدون رأس وأن توازنه مع الأساليب التقليدية القائمة على واجهة المستخدم لضمان تغطية الاختبار الشاملة.
أمثلة شائعة للمتصفحات مقطوعة الرأس
هناك العديد من المتصفحات بدون رأس المتاحة لكل منها ميزات وفوائد فريدة خاصة بها، مما يجعلها مناسبة لحالات الاستخدام المختلفة. نناقشها فيما يلي:-
PhantomJS
PhantomJS هو متصفح بدون رأس يستخدم WebKit كمحرك العرض الخاص به ويدعم معايير الويب المختلفة مثل HTML5 وCSS3 و Javaبرنامج نصي. يمكن استخدامه لالتقاط الشاشة ومهام أتمتة الصفحات. وهو مفتوح المصدر ومتوافق مع أنظمة تشغيل متعددة.
مثال Selenium مع مقطوعة الرأس PhantomJS في Python
from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities # Set up PhantomJS options phantomjs_options = webdriver.DesiredCapabilities.PHANTOMJS.copy() phantomjs_options['phantomjs.page.settings.userAgent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' # Set up the PhantomJS driver driver = webdriver.PhantomJS('/path/to/phantomjs', desired_capabilities=phantomjs_options) # Perform actions using the driver driver.get('https://www.example.com') print(driver.title) # Close the driver driver.quit()
الكروم
يعد Chrome هو المتصفح الأكثر شعبية على هذا الكوكب ويقدم ميزة مقطوعة الرأس أيضًا. يمكن استخدامه عبر منصات متعددة ويدعم لغات وأطر البرمجة. تعمل أدوات تصحيح الأخطاء المضمنة والوثائق الشاملة على تسهيل الاستخدام واستكشاف أي مشكلات قد تنشأ أثناء الاختبار وإصلاحها.
مثال على Chrome بدون رأس مع Selenium in Python
from selenium import webdriver from selenium.webdriver.chrome.options import Options # Set up Chrome options chrome_options = Options() chrome_options.add_argument('--headless') # Run Chrome in headless mode chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') # Set up the Chrome driver driver = webdriver.Chrome('/path/to/chromedriver', options=chrome_options) # Perform actions using the driver driver.get('https://www.example.com') print(driver.title) # Close the driver driver.quit()
Firefox
Firefox هو متصفح ويب شائع ويمكن استخدامه أيضًا كمتصفح بدون رأس لأغراض الاختبار. واحدة من فوائد الاستخدام Firefox نظرًا لكونه متصفحًا بدون واجهة، فإن طبيعته خفيفة الوزن تجعله خيارًا متعدد الاستخدامات للاختبار على أنظمة تشغيل مختلفة. بالإضافة إلى ذلك، بفضل وثائقه الشاملة ودعم المجتمع، Firefox يعد خيارًا ممتازًا لأولئك الذين يتطلعون إلى تجربة تقنية المتصفح بدون رأس.
مثال بلا رأس Firefox مع Selenium in Python
from selenium import webdriver from selenium.webdriver.firefox.options import Options # Set up Firefox options firefox_options = Options() firefox_options.add_argument('--headless') # Run Firefox in headless mode # Set up the Firefox driver driver = webdriver.Firefox(options=firefox_options) # Perform actions using the driver driver.get('https://www.example.com') print(driver.title) # Close the driver driver.quit()
مزايا اختبار المتصفح بدون رأس
- تنفيذ اختبار أسرع
- اختبار فعال من حيث التكلفة
- تغطية اختبار أفضل
- المرونة في إجراء الاختبارات
- التكامل مع خطوط أنابيب CI / CD
عيوب اختبار المتصفح بدون رأس
- عدم وجود واجهة المستخدم الرسومية
- صعوبات في التصحيح
- دعم محدود للمتصفح
HTMLUnitDriver
يعد HTML UnitDriver هو المتصفح الأقل وزنًا والأسرع تنفيذًا لـ WebDriver. لأنه يقوم على HtmlUnit. إنه شائع مثل برنامج تشغيل متصفح بلا رأس. إنه نفس Chrome أو IE أو FireFox برنامج التشغيل، ولكنه لا يحتوي على واجهة المستخدم الرسومية لذا لا يمكن للمرء رؤية تنفيذ الاختبار على الشاشة.
ميزات برنامج تشغيل وحدة HTML
- دعم بروتوكولات HTTPS وHTTP
- دعم استجابات HTML (النقر على الروابط، وإرسال النماذج، والمشي في نموذج DOM الخاص بمستند HTML وما إلى ذلك)
- دعم ملفات تعريف الارتباط
- دعم الخادم الوكيل
- دعم المصادقة الأساسية وNTLM
- أسعار Javaسيناريو تقنية
- دعم طرق الإرسال GET وPOST
- القدرة على تخصيص رؤوس الطلب التي يتم إرسالها إلى الخادم
- القدرة على تحديد ما إذا كانت الاستجابات الفاشلة من الخادم يجب أن تؤدي إلى استثناءات أو يجب إرجاعها كصفحات من النوع المناسب
خطوات استخدام برنامج تشغيل HTMLUnit مع Selenium
الخطوة 1) In Eclipseانسخ الكود التالي. أضف ملفات مكتبة السيلينيوم القياسية إلى المشروع. لا يلزم وجود ملفات jar إضافية.
package htmldriver; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.htmlunit.HtmlUnitDriver; public class htmlUnitYest { public static void main(String[] args) { // Creating a new instance of the HTML unit driver WebDriver driver = new HtmlUnitDriver(); // Navigate to Google driver.get("http://www.google.com"); // Locate the searchbox using its name WebElement element = driver.findElement(By.name("q")); // Enter a search query element.sendKeys("Guru99"); // Submit the query. Webdriver searches for the form using the text input element automatically // No need to locate/find the submit button element.submit(); // This code will print the page title System.out.println("Page title is: " + driver.getTitle()); driver.quit(); } }
الخطوة 2) قم بتشغيل الكود. ستلاحظ عدم تشغيل أي متصفح وتظهر النتائج في وحدة التحكم.
فوائد برنامج تشغيل وحدة HTML:
- نظرًا لأنه لا يستخدم أي واجهة مستخدم رسومية للاختبار، فسيتم تشغيل اختباراتك في الخلفية دون أي انقطاع بصري
- بالمقارنة بجميع الحالات الأخرى، يكون التنفيذ أسرع
- لإجراء اختباراتك من خلال برنامج تشغيل HtmlUnit، يمكنك أيضًا تحديد إصدارات المتصفح الأخرى
-
إنها منصة مستقلة وأسهل لإجراء العديد من الاختبارات في وقت واحد. مثالي لاجل اختبار الحمل.
القيود:
- ولا يمكنه محاكاة المتصفحات الأخرى Javaسلوك النص
PhantomJS
PhantomJS هو متصفح بدون رأس Javaواجهة برمجة التطبيقات النصية. إنها الحل الأمثل لاختبار موقع الويب بدون واجهة، والوصول إلى صفحات الويب والتلاعب بها، وتأتي مع واجهة برمجة تطبيقات DOM القياسية.
من أجل استخدام PhantomJS مع Seleniun، يجب على المرء استخدام GhostDriver. GhostDriver هو تطبيق لبروتوكول Webdriver Wire في JS البسيط لـ PhantomJS.
الإصدار الأحدث من PhatomJS لديه المتكاملة سائق الشبح و ليست هناك حاجة لتثبيته بشكل منفصل.
هنا كيف يعمل النظام-
خطوات التشغيل Selenium مع PhatomJS
الخطوة 1) تحتاج Eclipse مع Selenium تثبيت
الخطوة 2) تحميل فانتوم جي إس هنا
الخطوة 3) قم باستخراج المجلد الذي تم تنزيله إلى ملفات البرنامج
الخطوة 4) قم بتنزيل برنامج تشغيل PhantomJS من هنا. أضف الجرة إلى مشروعك
الخطوة 5) قم بلصق الكود التالي في Eclipse
package htmldriver; import java.io.File; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.phantomjs.PhantomJSDriver; public class phantom { public static void main(String[] args) { File file = new File("C:/Program Files/phantomjs-2.0.0-windows/bin/phantomjs.exe"); System.setProperty("phantomjs.binary.path", file.getAbsolutePath()); WebDriver driver = new PhantomJSDriver(); driver.get("http://www.google.com"); WebElement element = driver.findElement(By.name("q")); element.sendKeys("Guru99"); element.submit(); System.out.println("Page title is: " + driver.getTitle()); driver.quit(); } }
الخطوة 6) قم بتشغيل الكود. ستلاحظ أن الإخراج يظهر في وحدة التحكم ولا يتم تشغيل أي متصفح.
ملحوظة: عند التشغيل لأول مرة، بناءً على إعداداتك، قد تحصل على تحذير أمني من Windows للسماح بتشغيل PhantomJS. انقر على السماح بالوصول.
تستخدم العديد من المؤسسات Phantom.JS لأغراض مختلفة، على سبيل المثال،
- اختبار مقطوعة الرأس
- القبض على الشاشة
- أتمتة الصفحة
- شبكة رصد
- لتقديم لقطات شاشة لوحة القيادة لمستخدميها
- لتشغيل اختبارات الوحدة على سطر الأوامر
- لإنشاء كتيبات الموظفين من HTML إلى PDF
- جنبا إلى جنب مع QUnit لمجموعة الاختبار
الملخص
لاختبار التطبيق بسرعة في مختلف المتصفحات ودون أي انقطاع بصري، متصفح بلا رأس الاختبار يتم استخدامه. نظرًا لسرعته ودقته وسهولة الوصول إلى ميزاته، يكتسب برنامج تشغيل وحدة HTML وPhantomJS شعبية كبيرة لاختبار أتمتة المتصفح بدون واجهة. باتباع بعض الخطوات البسيطة، يمكنك معرفة مدى سهولة دمج هذه الأدوات مع أدوات أخرى وتنفيذ كود الاختبار.