מבוא------------במאמר זה, אסקור דרכים שונות ב-Java לאתחל את אובייקט ה-WebDriver
.אובייקט זה מניע את אוטומציית הדפדפן. עבור כל דרך אתחול, אציג את יתרונותיה וחסרונותיה. היישום מבוצע עם ChromeDriver, שהיא תוכנית המשמשת כמעטפת השולטת בדפדפן כרום המריץ את חבילת הבדיקות שלנו. אובייקט ה-driver שלנו שולח את פקודותיו ל-ChromeDriver ו-ChromeDriver מתפעל את דפדפן כרום.### שיטה 1 - אתחול האובייקט עם הפניה מוחלטת לנתיב לאובייקט ה-driverראשית, עלינו להוריד את קובץ ההפעלה של ChromeDriver למחשב שלנו;דף ההורדה הוא: https://chromedriver.chromium.org/downloadsעליכם לבחור גרסה התואמת לגרסת הדפדפן שלכם.ציינו את הנתיב על ידי הגדרת משתנה מערכת בשם webdriver.chrome.driver
.היישום הוא:java@Testpublic void test() { System.setProperty("webdriver.chrome.driver", "/absolute/path/to/binary/chromedriver"); WebDriver driver = new ChromeDriver();}
חסרונות• בגלל ההפניה המוחלטת, כאשר פרויקט האוטומציה שלנו נכתב על ידי מספר מפתחים בתוך פרוייקט המאוחסן ב-Git, אם אין להם את הנתיב הייחודי הקיים במחשב שלנו, ההפניה תיכשל והדפדפן לא יופעל מחדש.• מכיוון שיש קבצי הפעלה שונים למערכות הפעלה שונות - התוכנית שלנו לא תרוץ על מערכות הפעלה שונות שלא צירפנו עבורן את קובץ ההפעלה, לדוגמה, כאשר אנו עובדים על Windows, אז על לינוקס, הבדיקות שלנו לא ירוצו.• אין סטנדרטיזציה לגבי גרסת דפדפן כרום שהמשתמש במסגרת הבדיקות שלנו ישתמש בה, לדוגמה, אני משתמש בכרום 74, ומפתח אוטומציה אחר עשוי להשתמש בכרום 76 הדורש גרסת ChromeDriver שונה.### שיטה 2 - אתחול האובייקט עם הפניה יחסית לקובץ הפעלה בפרויקט האוטומציה שלנוישנו משתנה מערכת בשם user.dir
המשתמש במתודה המובנית getProperty
של System
המקבלת מחרוזת כמשתנה שהוא הספרייה שבה המשתמש שלנו עובד (לפי תיעוד Java על משתני מערכת).בדרך זו, עלינו לצרף את ה-ChromeDriver לפרויקט שלנו ואז להתייחס למיקומו היחסי.היישום הוא:java@Testpublic void test() { System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "/relative/path/to/binary/chromedriver"); WebDriver driver = new ChromeDriver();}
חסרונות• מכיוון שיש קבצי הפעלה שונים למערכות הפעלה שונות - התוכנית שלנו לא תרוץ על מערכת ההפעלה האחרת מקובץ ההפעלה שכללנו בפרויקט שלנו.• אנו יכולים לכתוב לוגיקה הבודקת את מערכת ההפעלה שבה אנו רצים ובהתאם להחליט איזה דרייבר לאתחל, אך לוגיקה זו תגדיל את זמן הריצה של חבילת הבדיקות שלנו.• אנו נדרשים לעדכן ידנית את גרסת ה-ChromeDriver מעת לעת, בהתאם לגרסת ה-Selenium שלנו, גם שדרוגים לדפדפן כרום עצמו עשויים לדרוש שדרוגי גרסה.יתרונות• מכיוון שההפניה יחסית, ניתן לכלול את התוכנית כחלק מפרויקט האוטומציה שלנו.### שיטה 3 – הטמעת ה-driver כמשתנה סביבהלמשתמשי Windows, אני ממליץ להתקין עם Chocolatey,שהוא מנהל חבילות. מלבד התקנת ChromeDriver
, הוא גם הופך אותו למשתנה סביבה.לאחר התקנה מוצלחת, הקלדת chromedriver
בשורת הפקודה, ונראה אותו מתחיל לרוץ.shellC:\Users\nir.tal>chromedriverStarting ChromeDriver 2.46.628402 (536cd7adbad73a3783fdc2cab92ab2ba7ec361e1) on port 9515Only local connections are allowed.Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
היישום הוא:java@Testpublic void test() { WebDriver driver = new ChromeDriver();}
חסרונות• השיטה מתאימה לפיתוח מקומי ולא ל-CI/CD. כל סוכן (agent)שיידרש להצטרף למאמץ הבדיקות יצטרךלהתקין דפדפנים ודרייברים משלו.• אנו עלולים להיתקל בבעיות תאימות כאשר הבדיקות שלנו ירוצו על דפדפנים / מערכות הפעלה / וגרסאות דרייברים שונות.יתרונות• אין צורך לקודד את נתיב ה-ChromeDriver.• ההתקנה אגנוסטית למערכת ההפעלה – מנהל החבילות יודע איזה דרייבר צריך להתקין.### שיטה 4 – WebDriverManagerמתוך GitHub:> WebDriverManager מאפשר אוטומציה של ניהול הדרייברים הבינאריים (למשל chromedriver, geckodriver וכו’) הנדרשים על ידי Selenium WebDriver.השימוש ב-WebDriverManager
מאפשר לנו לדלג על התקנת ChromeDriver
.תהליך ההחלטה באיזה דרייבר כרום להשתמש נשלט על ידינו באמצעות תצורת WebDriverManager
.נוכל להשתמש בגרסת ה-ChromeDriver העדכנית ביותר:java@Testpublic void test() { WebDriverManager.chromedriver().setup(); WebDriver driver = new ChromeDriver();}
או שנוכל לבחור גרסה ספציפית שאנו רוצים להשתמש בה. בדוגמה הבאה אנו רוצים להשתמש בגרסת ChromeDriver 2.46:java@Testpublic void test() { WebDriverManager.chromedriver().version("2.46").setup(); WebDriver driver = new ChromeDriver();}
חסרונות• החיסרון היחיד בשימוש בשיטה זו הוא שעלינו להתקין ידנית את דפדפן כרום כדי שהקסם יקרה.יתרונות• כפי שצוין קודם - אין צורך יותר להתקין ידנית את ה-driver באופן מקומי, WebDriverManager
עושה זאת עבורנו.### שיטה 5 – Selenium Gridבאמצעות Selenium Grid, יש לנו מערכת מרכזית השולטת בכל הדרייברים/דפדפנים שאנו רוצים להשתמש בהם בבדיקות.היישום הוא:java@Testpublic void test() { DesiredCapabilities capabilities = DesiredCapabilities.chrome(); driver = new RemoteWebDriver(new URL("http://ip_of_the_machine_where_hub_running:port/wd/hub"), capabilities);}
חסרונות• נדרש ידע בהתקנה ובתצורה של סביבת ה-Grid.יתרונות• עבודה עם שרת מרכזי המתאם את העבודה עם הדפדפנים והדרייברים שאנו צורכים לבדיקות.• תאימות - גרסאות ChromeDriver יהיו תואמות לגרסאות דפדפן כרום, ולא נתקל בבעיות תאימות בין גרסת ה-ChromeDriver לגרסת הדפדפן.• מדרגיות (Scalability) – אנו יכולים להגדיל את מספר ה-nodes בהתאם לעומס העבודה שלנו.לסיכום-------------במאמר זה, סקרנו דרכים שונות לאתחל את אובייקט ה-ChromeDriver. המלצתי היא לשלב התקנה מקומית של ChromeDriver להרצת בדיקות מקומית וניפוי שגיאות, בשילוב עם Selenium Grid.בקורס האוטומציה המתקדם שלנו, נלמד כיצד לפרוס תשתית Grid על קונטיינרים באמצעות Docker בכמה צעדים פשוטים שיעניקו לנו גם יכולות וידאו.בדיקות מהנות!
אוטומציית בדיקות - אתחול Selenium WebDriver - המדריך המלא
פורסם:
-
#Java
#Selenium
#WebDriver
#WebDriverManager
#Selenium-Grid
#Infrastructure
#Test-Automation
שתפו פוסט זה ב‑:
מוכנים לבנות את מפת הדרכים שלכם? נתחיל כאן