اجعل المتصفح يعمل بشكل أتوماتيكي مع Selenium


السلام عليكم


اليوم حاب أتكلم عن أداة رائعة أخبرني عنها الاخ الرائع ياسر الردادي. الاداة ببساطة أسمها سيلينيوم Selenium  وهي أداة تجعل المتصفح يعمل بشكل أتوماتيكي.

ماذا أقصد بشكل أتوماتيكي؟

لنأخذ سيناريو معين. صديقي خالد لديه روتين معين عندما يصل الى العمل.
بحيث يقوم بفتح حاسوب العمل ويقوم بتصفح موقع جريدة الرياض لقراء عناوين الاخبار.

مع Selenium  نستطيع إعادة تشغيل السيناريو الذي يقوم به
صديقنا خالد!  يعني بالمختصر المفيد: مع
سيلينيوم يمكنك عمل أي شيء يمكن المستخدم عمله بواسطة المتصفح.

استخدامات Selenium :

·        
يستخدمه مطورو
المواقع بشكل كبير لاختبار سلوك مواقعهم على عدة متصفحات.

·        
يستخدم لجعل أي
مهمة تعمل بشكل ذاتي! وليس لاستخدامه حدود !

·        
يستخدمه بعض الناس
لعمل بعض الWeb Scraping  “ وهذا هو الجزء المهتم فيه حالياً

سيلينيوم و Web Scraping

فد يسأل البعض عما يميز سيلينيوم عن بعض الادوات مثال Curl  و urlib
 و mechanize والتي تقوم بعمل طلبات HTTP من البرنامج الخاص بك أو موجه
الاوامر. اللذي يميز سيلينيوم بالحقيقية هو أنك تحصل على تجربة مطابقة تماماً
لتجربتك في تصفح المواقع! في نظري الادوات الاخرى مناسبة اذا كنت تتعامل مع مواقع
بسيطة ، تحتوي على حقول بسيطة ولاتحتوي على الكثير من الجافا سكربت أو الكثير من الحقول الديناميكية.


نأخذ مثال بسيط؟

سوف أستخدم في مثالي هذا  Selenium webdriver مع لغة البايثون. طبعاً تستطيع تطبيق هذا المثال
في لغتك المفضلة. راجع مستندات سيلينيوم الرسمية لمعرفة كيفية عمل ذلك.

كيفية التركيب:
سوف نقوم بالتركيب عن طريق مدير الحزم في بايثون pip
pip install selenium
 الان نحتاج موجّه. الموجه هو برنامج صغير يقوم بقيادة Selenium ولكل متصفح يوجد موجه مثل : Firefox Web Driver,Chrome Web driver etc…

في هذا المثال سوف نستخدم Chrome webdriver 
مثال:

# python
import os

from selenium import webdriver
os.environ[“webdrivers.chrome.driver”] = chromedriver

path_to_chromedriver = ‘/root/chromedriver’ # change path as needed
driver = webdriver.Chrome(executable_path = path_to_chromedriver)
سوف نقوم بطلب موقع google.com، عندما نتعامل مع سيلينيوم نحتاج القليل من الخبرة في HTML. في حالة لم يكن لديك بعض المعرفة بها فلا بأس . 

driver.get(“http://google.com”)
حسناً، الان نريد أن نبحث عن كلمة “Riyadh” في قوقل. كل ماعلينا فعله هو القيام بالضغط على الزر الأيمن واختيار “inspect Element”. هذه الاداة تتيح لك الضغط على أي عناصر الصفحة (حقول،روابط الخ..) ومن ثم تعرض لك الكود المصدري لهذا العنصر في لغة HTML. مثالًا على ذلك، هذا هو الكود المصدري لمربع البحث في موقع جوجل.
<input class=”gsfi” id=”lst-ib” maxlength=”2048″ name=”q” autocomplete=”off” title=”Search” type=”text” value=”” aria-haspopup=”false” role=”combobox” aria-autocomplete=”both” dir=”ltr” spellcheck=”false” style=”border: none; padding: 0px; margin: 0px; height: auto; width: 100%; position: absolute; z-index: 6; left: 0px; outline: none; background: url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D) transparent;”>
 كما يظهر لك، مربع البحث يحمل اسمه “q”. سوف نستخدم هذا الاسم لنخبر سيلينيوم عن ماذا نبحث عنه.
search= driver.find_element_by_name(“q”)
 ومن ثم نريد ان نكتب نص داخل مربع البحث، لنقل مثلا نريد أن نبحث عن “Riyadh”
search.send_keys(“Riyadh”)
وأخيراً نقوم بإرسال الطلب
search.submit()

driver.close()
 

التحدي في Selenium :

التحدي في سيلينيوم هي أن كيف تجد عناصر الصفحة لتستخدمها أو لتجلب
معلومات معينة منها. نقصد في عناصر الصفحة (الحقول، الروابط، الخ..). ولكي
تستطيع إيجاد هذه العناصر يوجد عدة طرق لذلك.

·         

طبعاً متى تستخدم أي طريقة منهم يعتمد بشكل كامل على الموقع التي تريد
أن تقوم بالتعامل معه بشكل أتوماتيكي.  سوف تكتشف من النظر الى الكود المصدري لبعض صفحات الويب  أن المصمم ارتكب جريمة
في تصميم الصفحة 😀  وسوف تكتشف العديد من التعليقات التي لاأدري هل
قام بنسيانها المطور أم وضعها عمداً. استخدام سيلينوم سهل جداً جداً والتحدي يكمن في
الصفحات التي تريد أن تعمل لها تنفيذ بشكل أتوماتيكي. من تجربتي البسيطة يوجد صفحات تأخذ معك أقل
من 5 دقائق ويوجد صفحات ممكن أن تعمل عليها يوم كامل !

في الختام:

أتمنى أن تعطيك هذه المقدمة البسيطة عن Selenium فكرة عن كيف تطويع هذا البرنامج الرائع في جعل مهامك تعمل بشكل أتوماتيكي.

انضم إلى المحادثة

4 تعليقات

  1. الله يعطيك العافيه اخوي عبدالرحمن شرح جدا مبسط وسلس.

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

  2. عندى سؤال عبد الرحمن
    استطيع الان التعامل مع السيلينيون وعمل Test Case باستخدام الجافا على المتصفح الذى اريده ولكن مشكلتى هو انى لا اجد قيمه له او انى لا اعرف قيمته …ما الذى يجعلنى اكتب كود لكل سيناريو اريد تنفيذه ومن ثم انفذه مره واحده هل تكمن الميزه ف امكانيه استخدامه على اكثر من متصفح ف نفس الوقت

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *