סלניום עם Ruby, חלק ב

בחלק א' של מדריך זה למדנו להורדינ ולהתקין את רובי , למדנו קצת על פקודות השפה דרך ה-irb שהוא למעשה Command Line שמפרש את קוד השפה ופולט תוצאה, אח"כ למדנו כיצד להטמיע את הפלאג-אין של רובי ב-Eclipse IDE שאנו כבר מכירים.

בחלק זה של המדריך נלמד מושג חדש – Gems , נתקין דרכו את הסלניום , נראה כיצד אנחנו מתחילים לכתוב קוד סלניומי ב-IDE ונקנח עם תוכנית בדיקה ראשונה.

התקנת סלניום דרך Gems:

אז מהם ה-Gems למעשה ? ה-Gems הם הספריות שמתממשקות לסביבת הרובי, וה-Ruby Gems הוא מנהל הספריות והתוספים של רובי. למה אני צריך את זה ? כי דרך ה-Gems אני יכול להתקין את סלניום (או כל ספרייה אחרת אשר תומכת בשפה).

איך עושים זאת ? פשוט מאוד. דבר ראשון נכנס לאתר ה-Gems בכתובת: https://rubygems.org ונכניס בשורת החיפוש את הערך Selenium Webdriver, ישנן לא מעט ספריות והרחבות ל-Selenium Webdriver באתר ועוד יותר ספריות והרחבות ל-Selenium עצמו , בהזדמנות אולי אכתוב פוסט המתאר את כל אותן יכולות שניתן לעבוד איתן בסלניום עם רובי.

נקליק על התוצאה הראשונה שהיא כמובן הרלוונטית עבורנו – Selenium-Webdriver  אפשר גם להבין זאת כאשר התוצאה הזו היא בעלת מספר ההורדות הרב ביותר (מעל ל-13 מיליון).

בצד ימין של המסך נראה שדה טקסט שמעליו רשום: INSTALL , נעתיק את הכתובת הרשומה שם:

נחזור ל-Eclipse , שימו לב כי כעת (אחרי שביצענו בהצלחה את השלב הקודם – התקנת הפלאג-אין של Ruby) נוצרו לנו views חדשים ב-IDE  , כמו זה ה-Terminal , נפתח אותו ונדביק אליו את הכתובת שהעתקנו קודם לכן, נקיש על ENTER ונמתין עד שהתקנת הסלניום תסתיים, המסך אמור להיראות כך:

בשעה טובה התקנו את סלניום על רובי. בוא נתחיל קצת לקודד….

 

פעולה אוטומטית בסלניום עם רובי:

התוכנית הראשונה בסלניום שנכתוב כאן תהיה פשוטה מאוד, בתוכנית זו אנו נאטמט כמה תהליכים , כמו כניסה למנוע חיפוש , הכנסת ערך לשדה החיפוש והדפסת כותרת האתר (תוצאת החיפוש).

תחילה נצהיר שאנו עובדים עם חבילת הסלניום (או נכון יותר לומר כי נגדיר לתוכנית שלנו למצוא את הרפרנסים לעבודה עם ספריות הסלניום) כך:

require "selenium-webdriver"

הגדרת הדרייבר מול פיירפוקס היא מאוד פשוטה ונעשית כך:

driver = Selenium::WebDriver.for :firefox

 הגדרת הדרייבר מול דפדפן הכרום מעט יותר מורכבת ומתבצעת כך:

chromedriver_path = File.join(File.absolute_path(", File.dirname("C://Projects/Selenium/Drivers")),"Drivers","chromedriver.exe")
puts chromedriver_path
Selenium::WebDriver::Chrome.driver_path = chromedriver_path
driver = Selenium::WebDriver.for :chrome

 את שאר הפקודות אנו נוכל לזהות מיד, בסה"כ כשאנו מדברים על דומיין הסלניום – הסינטקס של רובי  אינו שונה בהרבה מזה שאנו כבר מכירים מ-#C או JAVA , הנה דוגמת התוכנית המלאה:

require "selenium-webdriver"

chromedriver_path = File.join(File.absolute_path('', File.dirname("C://Projects/Selenium/Drivers")),"Drivers","chromedriver.exe")
puts chromedriver_path
Selenium::WebDriver::Chrome.driver_path = chromedriver_path
driver = Selenium::WebDriver.for :chrome
driver.navigate.to "http://google.com"

element = driver.find_element(:name, 'q')
element.send_keys "Hello WebDriver!"
element.submit

puts driver.title

driver.quit

התוצאה תהיה – Google כמובן

 

בדיקה אוטומטית בסלניום עם רובי:

אוקיי, אז אנחנו יודעים לשרבב ב-IDE כמה פקודות לאטמט פעולות עם סלניום, השלב הבא יהיה לכתוב תוכנית הממחישה בדיקה תוך כדי שימוש בכלים הנהוגים בעולם הבדיקות האמיתי (מחלקות , אנוטציות , assets וכו').

בתוכנית הבאה אנו נבצע חיבור Login פשוט למערכת , נוודא כי נכנסנו לאתר ונבצע בסוף פעולת Logout

נגדיר תחילה מחלקה אשר יורשת ממחלקת האם – Test::Unit::TestCase ונעבוד בתוכה .

נגדיר גם אנוטציות SetUp ו-tearDown וכמובן -Test , התוכנית אמורה להיראות כך:

 

require "selenium-webdriver"
require "test/unit"

class LoginClass < Test::Unit::TestCase

  def setup
    Selenium::WebDriver::Chrome.driver_path = File.join(File.absolute_path('', File.dirname("C://Projects/Selenuim/Drivers")),"Drivers","chromedriver.exe")
    @driver = Selenium::WebDriver.for :chrome
    @driver.get('http://blog.yoniflenner.net/demo')
    @driver.manage.window.maximize    
  end


  def teardown
    @driver.quit
  end


  def test_login
    @driver.find_element(:name, "username").send_keys "admin"
    @driver.find_element(:name, "password").send_keys "demo"
    @driver.find_element(:id, "submit").click
    sleep 0.3
    assert(@driver.find_element(:id => "loggedin").text.include?("You Are Logged in"),"Assertion Failed")
    @driver.find_element(:id, "logout").click
  end
end

 

עד כאן להפעם … מפה ניתן להוסיף ולהרחיב את התשתית שלכם לבדיקות נוספות שיתפרסו על סוגים שונים של אלמנטים, עם טיפולי שגיאות, הגדרה הירארכית נכונה של המחלקות… ולמעשה השמיים הם הגבול.

בהצלחה,

יוני

Scroll to Top
דילוג לתוכן