webdriverservice

WebDriver Service

אחד הדברים הראשונים שאנו לומדים בעבודה מול Selenium WebDriver הוא לפתוח דפדפן.

הפתיחה עצמה נעשית ע”י יצירת אובייקט מה-WebDriver ואיתחולו ע”י הקריאה לבנאי של המחלקה היורשת (ChromeDriver , SafariDriver וכו’) , בבנאי ישנה קריאה להפעלת ה-executable של הדפדפן. זאת אומרת, שבמידה וארצה לפתוח את דפדפן הכרום, אבצע את הפקודה:

 

נשאר לנו לטפל רק בדבר אחד קטן אך חשוב והוא הכרום דרייבר עצמו (כאמור לכל דפדפן אנו נעבוד מול הדרייבר שלו בעבודה מול דפדפן הכרום למשל, נשתמש בכרום דרייבר), במידה ולא הגדרנו לו את הנתיב דרך ה-Global Environment Parameters של מערכת ההפעלה, או במקומות קונפיגורביליים אחרים, אנו נצטרך להתייחס לכך בקוד שלנו, כך למשל:

 

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

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

אז הפתרון הבנאלי הוא לסגור את הדפדפן ע”י driver.quit ולפתוח אותו שוב ע”י מה שכבר ראינו:

 

זה יעבוד כמובן, אך כמו שאמרנו, הוא יבזבז לנו זמן יקר. אז מה הפיתרון ?

 

selenium_and_chrome

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

הרעיון פה משתמש מאחורי הקלעים במחלקת ChromeDriverService , ואיתחולו באובייקט ממחלקת ChromeDriverService.Builder (ה-Builder משמש בכדיי להגדיר אובייקט ממחלקת ChromeDriverService)

הנה הקוד שממש אותו:

 

אח”כ נוכל על אובייקט ה-service שיצרנו להפעיל את השירות בתחילת הרצת כל הטסטים שלנו ולסגור אותו בסיום:

 

וכעת, כשסיימנו לטפל ב-service נוכל להתפנות ל-driver עצמו ונאתחל אותו כך (עם RemoteWebDriver):

 

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

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

 

כתיבת תגובה

האימייל לא יוצג באתר. (*) שדות חובה מסומנים

היי, אני לא רובוט *

תגי HTML מותרים: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">