سيلينيوم (برنامج)
Selenium هو مشروع مفتوح المصدر شامل لمجموعة من الأدوات والمكتبات المصممة لدعم أتمتة المتصفحات . [ 3 ] يوفر أداة تشغيل لكتابة اختبارات وظيفية على معظم متصفحات الويب الحديثة ، دون الحاجة إلى تعلم لغة برمجة خاصة بالاختبارات (Selenium IDE). [ 4 ] كما يوفر لغة برمجة خاصة بمجال الاختبار (Selenese) لكتابة الاختبارات بلغات برمجة شائعة، منها JavaScript ( Node.js )، و C# ، وGroovy ، وJava ، وPerl ، و PHP ، وPython ، وRuby ، و Scala . يوجد غلاف برمجي بلغة C++ على صفحة Git الخاصة به، ولكنه لم يُحدَّث منذ سنوات. يعمل Selenium على أنظمة Windows و Linux و macOS . وهو برنامج مفتوح المصدر مُرخص بموجب رخصة Apache 2.0 .
تاريخ
طُوِّر برنامج Selenium في الأصل على يد جيسون هيغنز عام 2004 كأداة داخلية في شركة ThoughtWorks . [ 5 ] انضم لاحقًا إلى هيغنز مبرمجون ومختبرون آخرون في ThoughtWorks، قبل أن ينضم بول هامانت إلى الفريق ويقود تطوير نمط التشغيل الثاني الذي أصبح فيما بعد "Selenium Remote Control" (RC). وتم طرح الأداة كمصدر مفتوح في ذلك العام.
في عام ٢٠٠٥، قدّم دان فابوليتش ونيلسون سبرول (بمساعدة بات لايت بودي) عرضًا لقبول سلسلة من التعديلات التي من شأنها تحويل Selenium-RC إلى ما اشتهر به لاحقًا. وفي الاجتماع نفسه، استمر توجيه مشروع Selenium كلجنة، وكان هوغينز وهامانت ممثلين عن شركة ThoughtWorks. [ ٦ ]
في عام ٢٠٠٧، انضم هوغينز إلى جوجل . وواصل، مع آخرين مثل جينيفر بيفان، تطوير وتحسين استقرار Selenium RC. في الوقت نفسه، طوّر سيمون ستيوارت في شركة ThoughtWorks أداةً متطورةً لأتمتة المتصفح تُسمى WebDriver. في عام ٢٠٠٩، وبعد اجتماع بين المطورين في مؤتمر جوجل لأتمتة الاختبارات، تقرر دمج المشروعين، وتسمية المشروع الجديد Selenium WebDriver، أو Selenium 2.0. [ ٧ ]
في عام ٢٠٠٨، ابتكر فيليب هانريغو (الذي كان يعمل آنذاك في شركة ثوت ووركس) "سيلينيوم غريد"، وهو عبارة عن منصة مركزية تتيح تشغيل اختبارات سيلينيوم متعددة في وقت واحد على أي عدد من الأنظمة المحلية أو البعيدة، مما يقلل وقت تنفيذ الاختبار. وقدّم غريد، كمصدر مفتوح، إمكانية مشابهة لسحابة جوجل الداخلية/الخاصة لسيلينيوم آر سي. وكان بات لايت بودي قد أنشأ بالفعل سحابة خاصة لشركة "هوستد كيو إيه" والتي باعها لاحقًا لشركة غوميز.
اسم "سيلينيوم" مشتق من مزحة أطلقها هوغينز في رسالة بريد إلكتروني، ساخرًا من منافس يُدعى ميركوري ، قائلًا إن التسمم بالزئبق يُمكن علاجه بتناول مكملات عنصر السيلينيوم . وقد استغلّ الآخرون الذين تلقوا الرسالة الإلكترونية الاسم ونشروه على نطاق واسع. [ 8 ]
عناصر
يتكون Selenium من عدة مكونات، كل منها يؤدي دورًا محددًا في المساعدة على تطوير أتمتة اختبار تطبيقات الويب . [ 9 ]
Selenium IDE
Selenium IDE هي بيئة تطوير متكاملة (IDE) شاملة لاختبارات Selenium. وهي متوفرة كإضافة لمتصفح Firefox وامتداد لمتصفح Chrome . تتيح تسجيل الاختبارات الوظيفية وتحريرها وتصحيح أخطائها. كانت تُعرف سابقًا باسم Selenium Recorder. أنشأ شينيا كاساتاني Selenium IDE في الأصل وتبرع به لمشروع Selenium عام 2006. وبدأ الدعم الفني النشط لـ Selenium IDE عام 2018. [ 10 ] [ 11 ] [ 12 ] [ 13 ]
يمكن تسجيل البرامج النصية تلقائيًا وتعديلها يدويًا، مما يوفر دعمًا للإكمال التلقائي وإمكانية نقل الأوامر بسرعة. تُسجل البرامج النصية بلغة سيلينيز ، وهي لغة برمجة نصية خاصة باختبارات سيلينيوم. توفر سيلينيز أوامر لتنفيذ إجراءات في المتصفح (مثل النقر على رابط أو تحديد خيار) ولاسترجاع البيانات من الصفحات الناتجة. تُستخدم سيلينيز كلغة لكتابة أوامر سيلينيوم، والتي تُستخدم بدورها في اختبار تطبيقات الويب. تُسهّل هذه الأوامر، المصممة خصيصًا لعلامات HTML لعناصر واجهة المستخدم، عملية التحقق من وجودها، كما تُساعد سيلينيوم في فهم الإجراءات أو العمليات المحددة المطلوب تنفيذها.
واجهة برمجة تطبيقات عميل Selenium
كبديل لكتابة الاختبارات بلغة سيلينيز، يمكن كتابتها أيضاً بلغات برمجة مختلفة. تتواصل هذه الاختبارات مع سيلينيوم عبر استدعاء دوال في واجهة برمجة تطبيقات عميل سيلينيوم. يوفر سيلينيوم حالياً واجهات برمجة تطبيقات عميل للغات جافا ، وسي شارب ، وروبي ، وجافا سكريبت ، وآر ، وبايثون .
جهاز تحكم عن بعد سيلينيوم
Selenium Remote Control (RC) هو خادم مكتوب بلغة Java ، يستقبل أوامر المتصفح عبر بروتوكول HTTP . يُمكّن RC من كتابة اختبارات مؤتمتة لتطبيقات الويب بأي لغة برمجة، مما يسمح بتكامل Selenium بشكل أفضل مع أُطر اختبار الوحدات الحالية. لتسهيل كتابة الاختبارات، يوفر مشروع Selenium حاليًا برامج تشغيل عميل للغات PHP و Python و Ruby و . NET و Perl و Java . كما يمكن استخدام برنامج تشغيل Java مع JavaScript (عبر محرك Rhino ). يلزم وجود نسخة من خادم Selenium RC لتشغيل حالة اختبار HTML، مما يعني أن المنفذ يجب أن يكون مختلفًا لكل تشغيل متوازٍ. مع ذلك، بالنسبة لحالة اختبار Java/PHP، يكفي تشغيل نسخة واحدة فقط من Selenium RC بشكل مستمر. [ 14 ]
كان Selenium Remote Control إعادة هيكلة لـ Driven Selenium أو Selenium B، من تصميم بول هامانت، الذي يُنسب إليه الفضل مع جيسون كمشارك في ابتكار Selenium. كانت النسخة الأصلية تُشغّل عملية مباشرة للمتصفح المعني، من لغة الاختبار Java أو .NET أو Python أو Ruby. أُعيد تنفيذ بروتوكول الاتصال (الذي كان يُسمى "Selenese" آنذاك) في كل لغة. بعد إعادة الهيكلة بواسطة دان فابوليتش ونيلسون سبرول (بمساعدة بات لايت بودي)، أصبحت هناك عملية وسيطة تعمل في الخلفية بين نص الاختبار الرئيسي والمتصفح. شملت المزايا القدرة على التحكم في المتصفحات عن بُعد وتقليل الحاجة إلى نقل كل سطر من التعليمات البرمجية إلى مجموعة متنامية من اللغات. حلّ Selenium Remote Control محل Driven Selenium بالكامل في عام 2006. كان نمط المتصفح لـ "Driven" و"B" و"RC" هو الاستجابة/الطلب، والذي عُرف لاحقًا باسم Comet .
شكّل Selenium RC الإطارَ الرئيسي لاختبار تطبيقات الويب في مشروع Selenium بأكمله لفترة طويلة. وهو أول أداة اختبار ويب آلية وأهمها، تُمكّن المستخدمين من استخدام لغة البرمجة التي يفضلونها. [ 15 ] [ 16 ]
مع إصدار Selenium 2، تم إيقاف استخدام Selenium RC رسميًا لصالح Selenium WebDriver.
سيلينيوم ويب درايفر
يُعد Selenium WebDriver جوهر Selenium، وهو واجهة لكتابة التعليمات التي تعمل بشكل متبادل عبر المتصفحات. وهو خليفة Selenium RC. يستقبل Selenium WebDriver الأوامر (المرسلة بلغة Selenese، أو عبر واجهة برمجة تطبيقات العميل) ويرسلها إلى المتصفح. يتم تنفيذ ذلك من خلال برنامج تشغيل خاص بالمتصفح، والذي يرسل الأوامر إلى المتصفح ويسترجع النتائج. تقوم معظم برامج تشغيل المتصفحات بتشغيل تطبيق متصفح والوصول إليه (مثل Firefox أو Google Chrome أو Internet Explorer أو Safari أو Microsoft Edge )؛ كما يوجد أيضًا برنامج تشغيل متصفح HtmlUnit ، الذي يحاكي المتصفح باستخدام وضع HtmlUnit بدون واجهة رسومية. منذ Selenium 4 وGoogle Chrome الإصدار 109، أصبح الوضع بدون واجهة رسومية مدعومًا من خلال تطبيق أصلي للمتصفح، حيث يعمل Chrome بدون واجهة مستخدم رسومية ولكن مع سلوك عرض وتنفيذ مطابق للوضع العادي. [ 17 ]
على عكس Selenium 1، حيث كان خادم Selenium ضروريًا لتشغيل الاختبارات، لا يحتاج Selenium WebDriver إلى خادم خاص لتنفيذها. بدلاً من ذلك، يبدأ WebDriver مباشرةً تشغيل متصفح ويتحكم به. مع ذلك، يمكن استخدام Selenium Grid مع WebDriver لتنفيذ الاختبارات على أنظمة بعيدة (انظر أدناه). يستخدم WebDriver، حيثما أمكن، وظائف نظام التشغيل الأصلية بدلاً من أوامر JavaScript المستندة إلى المتصفح للتحكم به. هذا يتجاوز المشاكل المتعلقة بالاختلافات الدقيقة بين أوامر النظام الأصلية وأوامر JavaScript، بما في ذلك القيود الأمنية. [ 18 ]
في أوائل عام 2012، كان سيمون ستيوارت (مخترع WebDriver)، الذي كان يعمل آنذاك في جوجل، وديفيد بيرنز من موزيلا يتفاوضان مع اتحاد شبكة الويب العالمية (W3C) لجعل WebDriver معيارًا للإنترنت. في يوليو 2012، نُشرت مسودة العمل، وتلتها التوصية في يونيو 2018. [ 19 ] تم تنفيذ Selenium WebDriver (Selenium 2.0) بالكامل ودعمه في JavaScript ( Node.js ) و Python و Ruby و Java و Kotlin و C# . اعتبارًا من عام 2021، أصبح Selenium 4 مرشحًا للإصدار. [ 20 ]
بايثون
from selenium.webdriver import Firefox from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support.expected_conditions import presence_of_element_located from selenium.webdriver.remote.webelement import WebElementإذا كان __name__ يساوي " __main__" : # يتطلب هذا المثال Selenium WebDriver 3.13 أو أحدث مع Firefox () كبرنامج تشغيل : انتظر : WebDriverWait = WebDriverWait ( driver , 10 ) driver.get ( "https://google.com/ncr " ) driver.find_element ( By.NAME , " q " ) . send_keys ( f " cheese { Keys.RETURN } " ) first_result : WebElement = wait.until ( presence_of_element_located ( ( By.CSS_SELECTOR , " h3 " ) ) ) print ( first_result.get_attribute ( " textContent " ) )جافا
package org.wikipedia.examples ;استيراد java.time.Duration ؛استيراد org.openqa.selenium.By ؛ استيراد org.openqa.selenium.Keys ؛ استيراد org.openqa.selenium.WebDriver ؛ استيراد org.openqa.selenium.WebElement ؛ استيراد org.openqa.selenium.firefox.FirefoxDriver ؛ استيراد org.openqa.selenium.support.ui.WebDriverWait ؛ استيراد ثابت org.openqa.selenium.support.ui.ExpectedConditions.presenceOfElementLocated ؛public class HelloSelenium { public static void main ( String [] args ) { try ( WebDriver driver = new FirefoxDriver ()) { WebDriverWait wait = new WebDriverWait ( driver , Duration . ofSeconds ( 10 )) driver . get ( "https://google.com/ncr" ); driver . findElement ( By . name ( "q" )). sendKeys ( "cheese" + Keys . ENTER ); WebElement firstResult = wait . until ( presenceOfElementLocated ( By . cssSelector ( "h3" ))); System . out . println ( firstResult . getAttribute ( "textContent" )); driver . quit (); } catch ( Exception e ) { System . err . printf ( "Error caught: %s%n" , e . getMessage ()); } } }سي شارب
namespace Wikipedia.Examples ;باستخدام OpenQA.Selenium ؛ باستخدام OpenQA.Selenium.Firefox ؛ باستخدام OpenQA.Selenium.Support.UI ؛public class HelloSelenium { static void Main ( string [] args ) { using ( IWebDriver driver = new FirefoxDriver ()) { WebDriverWait wait = new ( driver , TimeSpan . FromSeconds ( 10 )); driver . Navigate (). GoToUrl ( "https://www.google.com/" ); driver . FindElement ( By . Name ( "q" )). SendKeys ( $"cheese{Keys.Enter}" ); wait . Until ( webDriver => webDriver . FindElement ( By . CssSelector ( "h3" )). Displayed ); IWebElement firstResult = driver . FindElement ( By . CssSelector ( "h3" )); Console . WriteLine ( firstResult . GetAttribute ( "textContent" )); } } }شبكة سيلينيوم
Selenium Grid هو خادم يسمح للاختبارات باستخدام متصفحات الويب العاملة على أجهزة بعيدة. في Selenium Grid، يعمل خادم واحد كمركز تحكم رئيسي. تتصل الاختبارات بهذا المركز للحصول على إمكانية الوصول إلى المتصفحات. يحتوي المركز على قائمة بالخوادم التي توفر الوصول إلى المتصفحات (عُقد WebDriver)، مما يسمح للاختبارات باستخدام هذه المتصفحات. يتيح Selenium Grid تشغيل الاختبارات بالتوازي على أجهزة متعددة، وإدارة إصدارات المتصفحات المختلفة وإعداداتها مركزياً (بدلاً من إدارتها في كل اختبار على حدة).
تُعدّ إمكانية تشغيل الاختبارات على خوادم متصفحات بعيدة مفيدةً لتوزيع عبء الاختبار على عدة أجهزة، ولتشغيل الاختبارات في متصفحات تعمل على منصات أو أنظمة تشغيل مختلفة. ويُعدّ هذا الأخير مفيدًا بشكل خاص في الحالات التي لا يمكن فيها تشغيل جميع المتصفحات المستخدمة للاختبار على نفس المنصة. [ 21 ]
انظر أيضاً
- Appium ، أتمتة تطبيقات الجوال وأجهزة الكمبيوتر المكتبية باستخدام WebDriver
- اختبار القبول
- كابيبارا (برنامج)
- معطى-عندما-إذن
- قائمة أدوات اختبار المواقع الإلكترونية
- ميدياويكي سيلينيوم
- اختبار الانحدار
- إطار عمل الروبوت
- السرو
مراجع
- ↑ "الإصدار 4.46.0" . 11 يوليو 2026. تم الاطلاع عليه في 11 يوليو 2026 .
- ↑ "التنزيلات" . سيلينيوم .
- ↑ "مشروع أتمتة متصفح سيلينيوم" . selenium.dev . 16 مارس 2020. تم الاطلاع عليه في 1 نوفمبر 2021 .
- ^ عبد اللاييف، الزراعة العضوية؛ إبراهيموفا، ل.ف. (2020). "مراجعة برامج الاختبار: برنامج السيلينيوم" (PDF) . الجامعة التقنية الوطنية في فينيسيا . УДК 004.457.
- ↑ "حول السيلينيوم" .
- ↑ "تاريخ سيلينيوم" . www.selenium.dev . تم الاطلاع عليه بتاريخ 11 أغسطس 2021 .
- ↑ "مشروع السيلينيوم" . thenewcircle.com . نيو سيركل . تم الاطلاع عليه بتاريخ 29 يونيو 2014 .
- ↑ كريل، بول (6 أبريل 2011). "مجموعة أدوات اختبار تطبيقات الويب Selenium مفتوحة المصدر لدعم أجهزة iPhone وAndroid" . InfoWorld . مؤرشف من الأصل في 5 مايو 2011. تم الاطلاع عليه في 9 مايو 2012. سُمّي Selenium بهذا الاسم لأن هوغينز، غير الراضي عن أدوات الاختبار المتوفرة في السوق ،
كان يبحث عن اسم يُسوّق المنتج كبديل لبرنامج الاختبار التجاري Mercury Interactive QuickTest Professional. وأوضح هوغينز أن اسم Selenium اختير لأن مكملات السيلينيوم المعدنية تُستخدم كعلاج للتسمم بالزئبق.
- ↑ معز الدين، خاجة (7 يونيو 2018). "مكونات أداة أتمتة سيلينيوم" . dzone.com . ديف أوبس زون . تم الاطلاع عليه في 10 يوليو 2019 .
- ↑ "لقد عاد! Selenium IDE Reborn مع ديف هافنر" . testingpodcast.com . 24 ديسمبر 2018.
- ↑ ديف، جولة دي (6 أغسطس 2018). "انتهى عصر Selenium IDE، فليحيا Selenium IDE!" . المدونة الرسمية لـ Selenium IDE . تم الاطلاع عليه في 27 نوفمبر 2019 - عبر seleniumhq.wordpress.com.
- ↑ كولانتونيو، جو (27 نوفمبر 2018). "عودة مذهلة لبيئة تطوير Selenium" . testguild.com . تم الاطلاع عليه بتاريخ 27 نوفمبر 2019 .
- ↑ سارجنت، آل (19 مارس 2019). "قائمة بميزات Selenium IDE الجديدة" . applitools.com . تم الاطلاع عليه في 18 أكتوبر 2021 .
- ↑ "التحكم عن بعد باستخدام سيلينيوم" . seleniumhq.org . تم الاطلاع عليه بتاريخ 13 نوفمبر 2019 .
- ↑ "Selenium 1 (Selenium RC) :: توثيق Selenium" . www.selenium.dev . تم الاطلاع عليه بتاريخ 20 ديسمبر 2020 .
- ↑ sparkdatabox_author (16 أكتوبر 2019). "Selenium | Spark Databox" . تم الاطلاع عليه في 20 ديسمبر 2020 .
{{cite web}}له|last=اسم عام ( مساعدة ) - ↑ "Headless is Going Away" .
- ↑ "بنية تطبيقات المصادر المفتوحة: Selenium WebDriver" . aosabook.org . تم الاطلاع عليه بتاريخ 7 فبراير 2016 .
- ↑ سميث، مايكل (5 يونيو 2018). "محركات WebDriver تتجه نحو توصية W3C" . مدونة W3C . تم الاطلاع عليه في 10 سبتمبر 2018 .
- ↑ "التنزيلات" . selenium.dev . تم الاطلاع عليه في 29 سبتمبر 2021 .
- ↑ "Selenium Grid" . مشروع أتمتة متصفح Selenium . تم الاطلاع عليه في 9 سبتمبر 2020 .
روابط خارجية
- اختبار واجهة المستخدم الرسومية
- أدوات اختبار التحميل
- أطر اختبار الوحدات
- برامج تطوير مواقع الويب
- أدوات اختبار البرمجيات
- مشاريع مفتوحة المصدر
