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

المتصفح بدون واجهة رسومية هو متصفح ويب لا يحتوي على واجهة مستخدم رسومية. يمكنه العمل في الخلفية دون أي انقطاع مرئي.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) قم بتشغيل الكود. ستلاحظ أنه لا يتم تشغيل أي متصفح وأن النتائج تظهر في وحدة التحكم.
فوائد برنامج تشغيل وحدة HTML
- وبما أنه لا يستخدم أي واجهة مستخدم رسومية، فإن الاختبارات تعمل في الخلفية دون أي انقطاع مرئي.
- بالمقارنة مع مثيلات برامج التشغيل الأخرى، يكون التنفيذ أسرع
- يمكنك أيضًا محاكاة إصدارات مختلفة من المتصفحات عند تشغيل الاختبارات من خلال HtmlUnitDriver
-
إنه مستقل عن المنصة ويسهل تشغيل عدة اختبارات في وقت واحد. إنه مثالي لـ اختبار الحمل.
القيود:
- لا يمكنها محاكاة ذلك بشكل كامل Javaسلوك البرمجة النصية لكل محرك متصفح حقيقي
PhantomJS
تذكير: تم إيقاف PhantomJS ولم يعد يتم صيانته. بالنسبة للمشاريع الجديدة التي لا تعتمد على واجهة المستخدم الرسومية، استخدم Selenium مع متصفح كروم بدون واجهة رسومية أو Firefoxأو الانتقال إلى برنامج Playwright. يبقى القسم أدناه كمرجع للتراث فقط.
PhantomJS هو متصفح بدون واجهة رسومية مع Javaواجهة برمجة التطبيقات النصية. كانت تستخدم تاريخيًا لاختبار مواقع الويب بدون واجهة رسومية، والوصول إلى صفحات الويب ومعالجتها، وتأتي مع واجهة برمجة تطبيقات DOM القياسية.
لاستخدام PhantomJS مع Seleniumأنت بحاجة إلى برنامج GhostDriver. GhostDriver هو تطبيق لبروتوكول WebDriver Wire Protocol بلغة عادية Javaنص برمجي لـ PhantomJS.
الإصدارات اللاحقة من PhantomJS المتكاملة GhostDriver، إذن لا حاجة لتثبيته بشكل منفصل.
إليكم كيفية عمل النظام:
خطوات الجري Selenium باستخدام PhantomJS
الخطوة 1) تحتاج Eclipse مع Selenium تثبيت.
الخطوة 2) تحميل فانتوم جي إس اضغط هنا.
الخطوة 3) Extracقم بنقل المجلد الذي تم تنزيله إلى مجلد "ملفات البرامج".
الخطوة 4) قم بتنزيل برنامج تشغيل PhantomJS من اضغط هناأضف ملف JAR إلى مشروعك.
الخطوة 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. انقر السماح الوصول.
استخدمت العديد من المنظمات تاريخياً PhantomJS لمهام مثل:
- اختبار بدون واجهة مستخدم
- تصوير الشاشة
- أتمتة الصفحة
- شبكة الرصد
- عرض لقطات شاشة لوحة التحكم لمستخدميهم
- تشغيل اختبارات الوحدة على سطر الأوامر
- إنشاء كتيبات الموظفين من HTML إلى PDF
- دمجها مع QUnit لمجموعة الاختبارات
في الأعمال الجديدة، استبدل حالات استخدام PhantomJS هذه بـ headless Chrome، headless Firefoxأو كاتب المسرحيات، والتي تتلقى تحديثات مستمرة للأمان والعرض.






