WebdriverCourse06

שיעור 6: ניווט

בסלניום נוכל למצוא סט של פונקציות איתם נוכל לנווט בדפי האינטרנט של הדפדפן שלנו, נוכל לנוע קדימה ואחורה ולנווט למיקום ספציפי.   פונקצית ה-NevigateTo: תיאור: בפונקציה זו אנו נוכל לנווט לאתר מסויים ע"י הכנסת מחרוזת (כתובת) לפרמטר שהפונקציה מקבלת. למעשה אין הבדל בין פונקציה זו לבין driver.get שכבר ראינו בשיעור 2. דוגמא: driver.navigate().to("http://blog.YoniFlenner.net");   פונקצית […]

WebdriverCourse07

שיעור 7: המתנה

אחד היתרונות הגדולים באוטומציה הוא גם אחד החסרונות. המהירות. כולנו מסכימים שביצוע פעולות אוטומטיות בקצב מהיר זה טוב ויפה, אז איפה יכולה להיות בעיה ? במקרים בהם המערכת הנבדקת – System Under test איטית למשל בתעבורת הרשת (נגיד בין הקליינט לסרבר), או כשהיא מגיבה לאט, תוכל להיווצר לנו בעיה. פקודת ה-FindElement שלנו עלולה שלא למצוא […]

WebdriverCourse08

שיעור 8: מעבר

בשיעור זה נלמד כיצד ניתן בעזרת סלניום לעבור בין חלונות הדפדפן שכוללים גם פריימים, טאבים ופופאפים. אך תחילה בואו נבין מה זה: window handle . בזמן שאנחנו יוצרים מופע (Instance) של Webdriver , למשל: driver = new FirefoxDriver(); מאחורי הקלעים סלניום מקצה מזהה ייחודי לכל חלון שפתוח בדפדפן (אותו אחד אליו קישרנו את ה-Driver, במקרה […]

WebdriverCourse09

שיעור 9: מציאת אלמנטים בדפדפן

בשיעורים הקודמים למדנו כיצד ניתן לזהות אלמנטים ב-DOM ואח"כ גם איך להפעיל עליהם מתודות, כמו click, sendkeys וכו'. כעת אנו נלך שלב אחד מוקדם יותר ונלמד כיצד אנו יכולים למצוא את האלמנטים ע"י הדפדפן בכדי להגדיר אותם בפונקציה , לדוגמא, כאשר אני רוצה להשתמש בפונקצית: WebElement element = driver.findElement(By.id("Username")); מניין לי לדעת כי ערך ה-ID […]

WebdriverCourse10

שיעור 10: טבלאות

בשיעור הקודם למדנו כיצד ניתן לשלוף נתונים מתוך הדפדפן עם כלים מובנים, אחד מהנתונים הוא ה-XPath. בשיעור זה נלמד כיצד להשתמש ב-XPath בכדיי לזהות תאים בתוך טבלה ולהפעיל עליהם מתודות. * אך לפני כן אני חייב לציין, כי זהו אמנם שיעור חשוב בכדיי לדעת בעיקר איך לעבוד עם טבלאות, אך עבודה עם XPath לטבלאות מורכבות […]

WebdriverCourse11a

שיעור 11: חיבור לדפדפנים

לפני הופעת סלניום WebDriver אנשי האוטומציה הסתפקו בגרסתו המוקדמת יותר שנקראה – Selenium Remote Control אשר חייב את המשתמשים להתקין שרת שידבר עם הדפדפנים השונים. ה-WebDriver הביא איתו שינוי תשתיתי שזנח את אותו חיבור לשרת והביא לנו את היכולת לעבוד ישירות מל הדפדפנים בעזרת דרייברים. חיבור מסוג זה שיפר את ה-Performance של ההרצות בזכות העבודה […]

WebdriverCourse12

שיעור 12: לוגים

ישנם כלים חיצוניים מצויינים בעבודה עם סלניום לאיסוף לוגים. בשיעור זה נלמד כיצד בעצמנו נוכל ליצור איזושהי מערכת אשר שולחת תרחישים (Events) ואוספת אותם להצגה למשתמש. כך, באופן זה, נוכל בקלות יותר לדבג את הקוד שלנו. לשם כך נלמד על מחלקה וממשק שעד עכשיו לא הצגנו: מחלקת EventFiringWebDriver וממשק – WebDriverEventListner. על פי השם, אין […]

WebdriverCourse13

שיעור 13: פרופילי דפדפן

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

WebdriverCourse14

שיעור 14: פרוקסי

בסלניום ניתן להשתמש בעבודה מול דפדפן עם שרת פרוקסי. בשיעור זה נלמד כיצד ניתן ליישם פעולה זו מול דפדפנים שונים. בדרך כלל באותו איזור בקוד היכן שמגדירים את הפרוקסי, ניתן להגדיר לעבוד עם הדפדפן ב-capabilities נוספים, גם אותם נראה פה בדוגמאות.   דפדפן הכרום: קריאה בג'אווה: String userAgent = "user_agent_string"; String proxy = "example:80"; org.openqa.selenium.Proxy […]

WebdriverCourse15

שיעור 15: צילומי מסך

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

WebdriverCourse11

שיעור 16: Page Object Model

עד עכשיו כתבנו קוד ללא שום מבניות מסויימת. הסתכלנו על עמוד בודד, אל האלמנטים שלו (ורק שלו) שלחנו פקודות של סלניום. אך מה יקרה כאשר נצטרך לעבוד עם הרבה דפים (מה שסביר להניח יקרה בפרוייקט אוטומציה אמיתי) ? הרי לא נרצה לקרוא לפקודה: driver.findElement(By.id("myID")).click(); עשרות פעמים בעשרות דפים שונים במוצר, זה יהיה גם שיכפול קוד […]

WebdriverCourse16

שיעור 17: שכבות

ברוכים הבאים לשיעור מספר 17, אולי השיעור החשוב ביותר בקורס זה. בשיעור זה נלמד כיצד פרוייקט אוטומציה אמיתי בנוי. איך ניתן לקחת את כל המידע הזה שלמדנו עד עכשיו וליישם אותו בתוך מודל יעיל, חסכוני וקל לתחזוקה. בשיעור שעבר למדנו על טכניקת ה-Page Object בה ניתן לעבוד בצורה חכמה תוך הימנעות משיכפולי קוד, מודל השכבות […]