HTMLUnitDriver في Seleniumشرح استخدام المتصفح بدون واجهة رسومية

⚡ ملخص ذكي

يُعد HtmlUnitDriver أسرع تطبيق بدون واجهة رسومية لـ Selenium أما WebDriver، بينما PhantomJS، الذي كان في السابق متصفحًا شائعًا بدون واجهة رسومية يعتمد على GhostDriver، فقد تم إيقافه منذ عام 2018 وحل محله الآن متصفح Chrome بدون واجهة رسومية. FirefoxوPlaywright لسير العمل الآلي الحديث.

  • 🤖 مفهوم بلا رأس: يجري Selenium إجراء الاختبارات بدون واجهة مستخدم رسومية مرئية لتوفير وحدة المعالجة المركزية والذاكرة ووقت التنفيذ عبر خطوط أنابيب التكامل المستمر.
  • ⚙️ قوة برنامج تشغيل وحدة HTML: نقي Java محرك، بدون ملفات تنفيذية خارجية، مثالي لإجراء فحوصات سريعة على مستوى بروتوكول HTTP وتفاعلات سريعة مع النماذج.
  • 🚀 إيقاف استخدام PhantomJS: توقف تطوير PhantomJS في عام 2018؛ ينبغي على الفرق الانتقال إلى Chrome بدون واجهة رسومية. Firefoxأو كاتب مسرحي.
  • ✅ البدائل الحديثة: كروم بدون رأس و Firefox عرض دقيق Javaعرض النصوص البرمجية، وبروتوكول أدوات المطورين، وتحسين عملية تصحيح الأخطاء.
  • 🧪 أفضل حالات الاستخدام: عمليات التحقق من الدخان، ومجموعات اختبار الانحدار، واختبار التحميل، ووظائف التكامل المستمر على مشغلات Linux بدون واجهة رسومية.

HTMLUnitDriver في Selenium

المتصفح بدون واجهة رسومية هو متصفح ويب لا يحتوي على واجهة مستخدم رسومية. يمكنه العمل في الخلفية دون أي انقطاع مرئي.tracيوفر المتصفح بدون واجهة رسومية طريقة فعالة لاختبار تطبيقات الويب مع توفير الوقت والموارد. في هذه المقالة، نستكشف ماهية المتصفح بدون واجهة رسومية، ومتى يُستخدم اختبار المتصفح بدون واجهة رسومية، وكيفية إجرائه باستخدام Selenium HtmlUnitDriver و PhantomJS.

ما هو المتصفح بدون واجهة رسومية؟

المتصفح بدون واجهة رسومية هو متصفح ويب بدون واجهة مستخدم رسوميةيتصرف هذا البرنامج تمامًا مثل متصفح عادي، ولكنه لا يعرض أي نافذة واجهة مستخدم رسومية أثناء التشغيل.

تتضمن بعض الأمثلة على برامج تشغيل المتصفحات بدون واجهة رسومية ما يلي:

  • htmlUnit
  • شبح
  • PhantomJS (مهمل)
  • ZombieJS
  • Watir-برنامج تشغيل الويب
  • كروم مقطوع الرأس
  • بلا رأس Firefox

متى يجب استخدام اختبار المتصفح بدون رأس؟

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

اختبار المتصفح بدون رأس مع Selenium

Selenium هي أداة قوية لاختبار المتصفحات بدون واجهة رسومية، مما يسمح للمطورين بتشغيل الاختبارات الآلية دون واجهة مستخدم مرئية. من خلال تشغيل الاختبارات في الخلفية، Selenium يوفر الوقت والموارد، ويساعد أيضاًping تحديد المشكلات التي قد لا تظهر في بيئة اختبار تقليدية تعتمد على واجهة المستخدم. يشمل ذلك مشكلات الأداء والتصميم التي لا تتضح إلا في بيئة اختبار بدون واجهة مستخدم. مع ذلك، من المهم تحقيق التوازن بين اختبار بيئة الاختبار بدون واجهة مستخدم واختبارات واجهة المستخدم التقليدية لضمان تغطية شاملة.

أمثلة شائعة للمتصفحات مقطوعة الرأس

تتوفر العديد من المتصفحات التي تعمل بدون واجهة رسومية، ولكل منها ميزاتها وفوائدها الخاصة، مما يجعلها مناسبة لحالات استخدام مختلفة. سنناقشها فيما يلي.

PhantomJS

إشعار الإيقاف: توقف التطوير النشط لـ PhantomJS في عام 2018، ولم يعد المشروع يحظى بالصيانة. ينبغي على المشاريع الجديدة تفضيل استخدام Chrome بدون واجهة رسومية. Firefox أو الكاتب المسرحي لأتمتة العمليات الحديثة بدون واجهة مستخدم. مثال 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 بدون رأس مع 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()

مزايا اختبار المتصفح بدون رأس

  • تنفيذ اختبار أسرع
  • اختبار فعال من حيث التكلفة
  • تغطية اختبار أفضل
  • المرونة في إجراء الاختبارات
  • تكامل أسهل مع خطوط أنابيب التكامل المستمر/التسليم المستمر

عيوب اختبار المتصفح بدون رأس

  • عدم وجود واجهة مستخدم رسومية مرئية للفحص اليدوي
  • قد يكون تصحيح الأخطاء أكثر صعوبة بدون شاشة
  • تغطية محدودة لسلوك المتصفحات

HtmlUnitDriver

يُعدّ HtmlUnitDriver أخفّ وأسرع تطبيق لمتصفح بدون واجهة رسومية لـ Selenium WebDriver. يعتمد على HtmlUnit ويُعرف أيضًا باسم برنامج تشغيل متصفح بلا رأسيتصرف مثل متصفح كروم أو إنترنت إكسبلورر أو Firefox برنامج تشغيل، ولكنه لا يحتوي على واجهة مستخدم رسومية، لذا فإن تنفيذ الاختبار غير مرئي على الشاشة. لا يزال برنامج HtmlUnitDriver قيد الصيانة ويتم توزيعه من خلال org.seleniumhq.selenium:htmlunit3-driver قطعة أثرية من مافن.

ميزات برنامج تشغيل وحدات HTML:

  • دعم بروتوكولات HTTPS وHTTP
  • دعم استجابات HTML (النقر على الروابط، وإرسال النماذج، وتصفح نموذج DOM لمستند HTML، والمزيد)
  • دعم ملفات تعريف الارتباط
  • دعم الخادم الوكيل
  • دعم المصادقة الأساسية وNTLM
  • سوليد Javaسيناريو تقنية
  • دعم طرق الإرسال GET و POST
  • القدرة على تخصيص رؤوس الطلب التي يتم إرسالها إلى الخادم
  • القدرة على التحكم فيما إذا كان ينبغي أن تُصدر الاستجابات الفاشلة من الخادم استثناءات أو تُعاد كصفحات من النوع المناسب

خطوات استخدام HtmlUnitDriver مع Selenium

الخطوة 1) In Eclipseانسخ الكود التالي. أضف المعيار Selenium أضف ملفات المكتبة إلى المشروع. لا حاجة إلى ملفات 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 HtmlUnit 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) قم بتشغيل الكود. ستلاحظ أنه لا يتم تشغيل أي متصفح وأن النتائج تظهر في وحدة التحكم.

خطوات استخدام HtmlUnitDriver مع Selenium

فوائد برنامج تشغيل وحدة HTML

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

القيود:

  • لا يمكنها محاكاة ذلك بشكل كامل Javaسلوك البرمجة النصية لكل محرك متصفح حقيقي

PhantomJS

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

PhantomJS هو متصفح بدون واجهة رسومية مع Javaواجهة برمجة التطبيقات النصية. كانت تستخدم تاريخيًا لاختبار مواقع الويب بدون واجهة رسومية، والوصول إلى صفحات الويب ومعالجتها، وتأتي مع واجهة برمجة تطبيقات DOM القياسية.

لاستخدام PhantomJS مع Seleniumأنت بحاجة إلى برنامج GhostDriver. GhostDriver هو تطبيق لبروتوكول WebDriver Wire Protocol بلغة عادية Javaنص برمجي لـ PhantomJS.

الإصدارات اللاحقة من PhantomJS المتكاملة GhostDriver، إذن لا حاجة لتثبيته بشكل منفصل.

إليكم كيفية عمل النظام:

PhantomJS

خطوات الجري Selenium باستخدام PhantomJS

الخطوة 1) تحتاج Eclipse مع Selenium تثبيت.

الخطوة 2) تحميل فانتوم جي إس اضغط هنا.

خطوات التشغيل Selenium باستخدام PhantomJS

الخطوة 3) Extracقم بنقل المجلد الذي تم تنزيله إلى مجلد "ملفات البرامج".

خطوات التشغيل Selenium باستخدام PhantomJS

الخطوة 4) قم بتنزيل برنامج تشغيل PhantomJS من اضغط هناأضف ملف JAR إلى مشروعك.

خطوات التشغيل Selenium باستخدام 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) قم بتشغيل الكود. سترى الناتج في وحدة التحكم ولن يتم فتح أي متصفح.

NOTE: في التشغيل الأول، قد ترى تحذيرًا أمنيًا من Windows للسماح بتشغيل PhantomJS. انقر السماح الوصول.

خطوات التشغيل Selenium باستخدام PhantomJS

استخدمت العديد من المنظمات تاريخياً PhantomJS لمهام مثل:

  • اختبار بدون واجهة مستخدم
  • تصوير الشاشة
  • أتمتة الصفحة
  • شبكة الرصد
  • عرض لقطات شاشة لوحة التحكم لمستخدميهم
  • تشغيل اختبارات الوحدة على سطر الأوامر
  • إنشاء كتيبات الموظفين من HTML إلى PDF
  • دمجها مع QUnit لمجموعة الاختبارات

في الأعمال الجديدة، استبدل حالات استخدام PhantomJS هذه بـ headless Chrome، headless Firefoxأو كاتب المسرحيات، والتي تتلقى تحديثات مستمرة للأمان والعرض.

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

المتصفح بدون واجهة رسومية هو متصفح ويب يعمل بدون واجهة مستخدم رسومية. Seleniumبرامج تشغيل بدون واجهة رسومية مثل HtmlUnitDriver و headless Chrome و headless Firefox تنفيذ الاختبارات في الخلفية، مما يوفر الموارد ويسرع مجموعات الأتمتة.

لا. تم تعليق تطوير PhantomJS في عام 2018 ولم يعد المشروع قيد الصيانة. Selenium كما أزالت PhantomJSDriver من الإصدارات الأخيرة. يجب أن تستخدم الاختبارات الجديدة متصفح Chrome بدون واجهة رسومية. Firefoxأو كاتب مسرحي بدلاً من ذلك.

HtmlUnitDriver هو برنامج نقي Java محرك سريع للغاية، ولا يحتاج إلى ملف تنفيذي للمتصفح، ولكنه محدود الإمكانيات. Javaدقة البرمجة النصية. يستخدم متصفح كروم بدون واجهة رسومية محرك Blink الحقيقي، لذا فهو يعرض الصور الحديثة. Javaالمواقع التي تعتمد بشكل كبير على البرامج النصية تعمل بدقة، ولكن على حساب زيادة استخدام الموارد.

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

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

نعم. يمكن للمساعدين الذكيين الحديثين توليد Selenium نصوص WebDriver في Java, Python أو Javaنص برمجي من خطوات مكتوبة بلغة إنجليزية بسيطة، بما في ذلك خيارات التشغيل بدون واجهة رسومية لمتصفح Chrome أو Firefox. راجع دائمًا الكود المُنشأ للتأكد من صحة عمليات الانتظار والمحددات والأمان قبل تشغيله في بيئة التكامل المستمر (CI).

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