קורס סלניום עם Python – חלק ב'

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

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

התקנת סלניום על פייתון

בשביל להתחיל עם סלניום ופייתון, תחילה נראה כיצד אנו פותחים פרוייקט חדש. לאחר שפתחתם את Eclipse , הקישו על File -> New , אם לא קיים לנו עדיין PyDev Project , נקיש על Other

ומשם נבחר את PyDev Project:

 

נקיש על NEXT ונבחר את הערכים הבאים:

 

נקיש על Finish ונאשר את ההודעה הבאה:

 

כעת הפרוייקט שלנו אמור להיראות כך ב-Package Explorer של ה-Eclipse:

 

בשביל להתקין את ספריות הסלניום בפרוייקט הפייתון שלנו , נפתח Command Line ונכניס את השורה הבאה:

C:\Python27\Scripts\pip.exe install selenium

אנו אמורים לראות את התוכנית מבצעת פעולות התקנה שבסיומה יזרק לנו למסך Successfully Installed Selenium:

 

כעת אנו צריכים לשייך את הספריות של סלניום שהורדנו אל הפרוייקט החדש שפתחנו, אז נסמן את הפרוייקט שלנו ב-Package Explorer , נקיש עליו עם המקש הימני של העכבר ונבחר את Properties , בחלון החדש נלך ל-PyDev – PYTHONPATH , נקיש על הטאב – External Libraries ונבחר לו את הנתיב: C:\Python27\Lib\site-packages

 

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

נכתוב כעת את הקוד הראשון שלנו, לשם כך נעבור שוב ל-Eclipse ונפתח מודול חדש בפייתון, נקיש על File -> New -> PyDev Module :

* – הModules בפייתון מגדירים גם Templates – מה שבעיקר יעניין אותנו

נכניס שם של Package ושם של Module (ה-Packege מכיל את ה-Module):

נקיש על Finish ובשלב זה נבחר את המודול – Main:

נוצר לנו קובץ חדש עם סיומת py

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

from selenium import webdriver  
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://www.google.com")

elem = driver.find_element_by_name("q")
elem.send_keys("Yoni Flenner")
elem.send_keys(Keys.RETURN)

driver.close()

 

בדיקה אוטומטית בסלניום ופייתון

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

אז תחילה ניצור מודול חדש , כמו שיצרנו בשלב הקודם, רק שהפעם נבחר Template – Unittest

 

הקובץ החדש שנוצר לנו אמור להיראות כך:

אנו רואים כי ה-template כבר מכיל בתוכו חלוקה למקטעים של Unit Testing שאנו כבר מכירים בסלניום מסביבות אחרות. נשתמש באותו מקרה מהסעיף הקודם , רק שהפעם נכניס גם בדיקות:

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

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

class Test(unittest.TestCase):


    def setUp(self):
        self.driver = webdriver.Firefox()


    def tearDown(self):
        self.driver.quit()


    def testName(self):
        driver = self.driver
        driver.get("http://www.google.com")
        assert "Google" in driver.title
        elem = driver.find_element_by_name("q")
        elem.send_keys("Yoni Flenner")
        elem.send_keys(Keys.RETURN)
        assert "Kuku" not in driver.page_source

 

הטסט עבר בהצלחה (המילה Kuku לא נמצאה כשחיפשתי את שמי , תודה לאל 🙂 )

 

כעת בואו ננסה להכשיל את הטסט , על ידי שינוי ערך ה-Assert בסוף הבדיקה:

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

class Test(unittest.TestCase):


    def setUp(self):
        self.driver = webdriver.Firefox()


    def tearDown(self):
        self.driver.quit()


    def testName(self):
        driver = self.driver
        driver.get("http://www.google.com")
        assert "Google" in driver.title
        elem = driver.find_element_by_name("q")
        elem.send_keys("Yoni Flenner")
        elem.send_keys(Keys.RETURN)
        assert "Yoni" not in driver.page_source

 

זה יביא אותנו אל התוצאה:

2 תגובות נוספו

  1. lio 23/10/2018 הגב

    איך אני פותר את הבעיה הזאת?
    C:\Users\liorge>python
    Python 2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:22:17) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from selenium import webdriver
    >>> from selenium.webdriver.common.keys import Keys
    >>> driver = webdriver.Firefox()
    Traceback (most recent call last):
    File "", line 1, in
    File "C:\Python27\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 164, in __init__
    self.service.start()
    File "C:\Python27\lib\site-packages\selenium\webdriver\common\service.py", line 83, in start
    os.path.basename(self.path), self.start_error_message)
    selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

    • היי ליאו,
      לפי ההודעה ה-GeckoDriver שאתה עובד איתו (אם אתה עובד איתו) לא ממוקם בנתיב הנכון

השאר הערה\הודעה