מדריך | אוטומציה באמצעות Selenium | חלק 2 - אובייקט WebDriver
בפוסט הקודם הצגתי והסברתי בקצרה על תשתית Selenium ועל עוצמתה בכל הנוגע לאוטומציית דפדפנים.
היום ובמדריכים הקרובים, אצלול ואסביר קצת יותר לעומק על המודולים השונים בתשתית ועל אופן השימוש בהם.
דרישות קדם: הכירות עם תכנות בסיסי ב C#, היכרות עם תשתית הבדיקה NUnit, קריאת המדריך הראשון על Selenium.
על מנת לבצע פעולות על הדפדפן אנחנו מאתחלים אובייקט WebDriver (לדוגמה Chrome) בממשק IWebDriver.
ממשק IWebDriver מחצין עבורנו את הפונקציונליות אשר ניתנת לביצוע על הדפדפן שלנו.
היום אסקור חלק קטן אך חשוב ובסיסי מאוד מהפונקציונליות שתשתית Selenium נותנת לנו לבצע על דפדפן.
IWebDriver
לאחר שיצרנו עצם בממשק IWebDriver, נוכל לצפות בIntellisense של העצם שיצרנו ולראות את כל הפונקציונליות הקיימת והמוחצנת עבור העצם:
כעת אדבר בקצרה על כל הפונקציות הרלוונטיות לנו כרגע.
driver.Close()
ניתן לצפות בהסבר על כל פונקציה, כולל מה היא מקבלת ומחזירה, באמצעות סימונה:
כאן לדוגמה ניתן לראות ש Close היא פונקציה שמחזירה Void (זאת אומרת כלום) ולא מקבלת פרמטר. הפונקציה תסגור את החלון הנוכחי או את הדפדפן עצמו.
driver.FindElement()
במהלך העבודה עם Selenium, וכאשר אנו רוצים להיכנס לעומקה של אפליקציית הWeb ולסייר בה, נצטרך למצוא ולעבוד עם WebElements שונים ומגוונים.
ניתן לראות בדוגמה מהפוסט הקודם שלאחר שגלשנו לגוגל רצינו להכניס לשורת החיפוש טקסט.
יצרנו אובייקט בממשק IWebElement אשר מספק לנו אפשרות לבצע את כל הפעולות שנרצה על האלמנט.
לאחר יצירת הWebElement הכנסנו את הטקסט ושלחנו Enter.
FindElement מקבל By (על By נדבר יותר לעומק בפוסט הבא - בגדול, סוג האלמנט שאותו אנחנו רוצים למצוא) ומחזיר IWeb Element.
לא לדאוג אם אתה בטוח סגור לגמרי על מהו WebElement ואיך עובדים איתו. על זה בדיוק אדבר בפוסט הבא.
driver.FindElements()
די דומה לשימוש ב FindElement רק שכאן חזור Collection של IWebElement.
מתי נרצה להשתמש ב FindElements?
כאשר נרצה לתפוס מספר מרובה של אלמנטים ולבצע בם פעולות.
לדוגמה: לקחת את כל התוצאות של חיפוש מסוים בגוגל ולבדוק כמה מהן מכילות מחרוזת מסוימת.
זאת נעשה באמצעות שימוש בפקודה
driver.FindElements(By.PartialLinkText("...."))
driver.Manage()
באמצעות Manage ניתן לגשת ולבצע מניפולציות על נתונים כמו ה Cookies והלוגים של הדפדפן
דוגמה לשימוש נפוץ:
driver.Manage().Cookies.DeleteAllCookies();
driver.Navigate()
באמצעות Navigate נוכל לבצע פחות או יותר את כל הפעולות הסטנדרטית שקיימות בשורת הפקודה בדפדפן שלנו.
פעולות בסיסיות אך עוצמתיות מאד.
נוכל לחזור אחור בדף, להתקדם לדף הבא (במידה וחזרנו קודם אחורה), לבצע רענון, ולגלוש לUrl אחר.
driver.PageSource
באמצעות מאפיין ה driver הנ"ל - PageSource, נוכל לקבל את קוד המקור של הדף בו אנחנו נמצאים.
driver.Quit()
סגירת ה Driver.
שונה מהפעולה Close אשר סוגרת חלון ב Driver.
driver.Title
מאפיין שמאפשר את קבלת ה Title של הדף.
driver.Url
מאפיין שמאפשר קבלה והשמה של כתובת ה Url בDriver.
השמה תגלוש לאתר שהוכנס, לדוגמה:
driver.Url = "http://automatzia.com";
לסיכום
היום המשכתי לחשוף בפירוט קצת יותר מעמיק את היכולות של Selenium בדגש על אובייקט ה WebDriver
בפוסטים הבאים אגע ואחקור יכולות נוספות.
אם הנושא מעניין אותך, אני ממליץ לך לחשוב על דבר אוטומטי שתרצה לעשות באמצעות הדפדפן (לדוגמה: לגלוש לאתר חדשות שאתה נוהג לקרוא ולהוריד משם את הכתבות של דף הבית) ולהתחיל לממש את הפעולות בעצמך.
חשוב לזכור את הכלל - צריך ללמוד כדי לעשות, לא כדי ללמוד.
נתראה בפוסט הבא :)
Hi, Could you please elaborate a bit more about the difference between driver.close() and driver.quit?
השבמחקdoes driver.close() leave the browser open while driver.quit() closes the browser as well?
webDriver.Close() - Close the browser window that the driver has focus of
מחקwebDriver.Quit() - Calls Dispose()
webDriver.Dispose() Closes all browser windows and safely ends the session