כל איש בדיקות בערך כיום מכיר את Selenium WebDriver לבדיקות אוטומטיות על אפליקציות Web והרבה גם מכירים את Appium לבדיקות אוטומטיות על אפליקציות Mobile. הרבה פחות מכירים כלים לבדיקות אוטומטיות על אפליקציות Desktop. פוסט זה בא להרחיב על הכלי הפופולרי והמוערך ביותר בשוק בתחום זה. חברים, הכירו את WinAppDriver (קיצור של Windows Application Driver).

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

ה-WinAppDriver הינו כלי חינמי (אך לא Open Source, באתר הם רושמים שהם בוחנים את האפשרות להוציא אותו מ-close source ל-open…), הוא עובד על מערכת הפעלה חלונות גרסה 10 (home / pro) וכן Windows Server 2016 , והוא תומך באפליקציות מבוססות: UWP, WPF, WinForms וכן Win32 הישן…

 

 

מה הופך אותו לכלי כל כך טוב ומוביל בתחומו (Automation Desktop Applications) ?

1. הוא חינמי

2. הוא מגיע מחברה גדולה

3. והכי חשוב – הוא משתמש בפרוטוקול של ה-WebDreiver

מה זה אומר ? זה אומר שאם אתם מגיעים מעולם האוטומציה על ה-Web / Mobile ואתם יודעים כבר לתכנת בסביבת ה-WebDriver, אז המעבר ל-WinAppDriver יהיה עבורכם קליל, מהיר וברור, גם בסביבת WinAppDriver נזהה אלמנטים עם findElement, גם כאן נעבוד עם Page Objects וגם כאן נשתמש באותן מתודות של click, sendKeys, clear וכו'…

חשוב גם לציין כי WinAppDriver יכול לרוץ כ-Standalone וגם כפלאג-אין ל-Appium כך שאם אתם כבר מריצים את השרת של Appium אז בקשת אוטומציה על Win10 תפעיל למעשה את ה-WinAppDriver.exe.

 

התקנת הסביבה:

ישנם כמה שלבים אותם נצטרך לבצע במידה ונרצה לעבוד עם WinAppDriver

1. הורדה והתקנה של WinAppDriver, את ההורדה נבצע מהאתר: https://github.com/Microsoft/WinAppDriver/releases (יש לבחור את קובץ: WindowsApplicationDriver.msi)

ההתקנה היא הליך פשוט של Next, Next…

2. לאפשר את אופציית ה-Developer Mode במערכת ההפעלה שלנו (Win10)

לשם כך נפתח את תפריט ה-Settings ומשם נלך ל-Update & Settings ונלחץ על האופצייה של For Developers ושם על Developer Mode בכדיי שתותקן לנו החבילה הזו על מערכת ההפעלה:

3. הורדה והתקנת Windows SDK , בשביל בנוכל לזהות את האלמנטים באפליקציית ה-Desktop, נרצה להשתמש בכלי ייעודי לכך הנקרא: inspect.exe , כלי זה מגיע כחלק מחבילת ה-Windows SDK שנצטרך להתקין:

 

ב-Nuget Package Manager (עם Visual Studio) אנחנו נתקין את הספריות הרלנוונטיות:

Selenium.WebDriver

Selenium.Support

Nunit

Nunit3TestAdapter

Appium.WebDriver

 

 

שימוש ב-Inspect:

לזיהוי UI Elements, נשתמש בכלי זה. בדוגמא הבאה פתחתי את אפליקציית ה-Sticky Notes וניסיתי לזהות את האלמנטים של אפליקציה זו עם Inspect:

 

כתיבת האוטומציה:

ניתן לכתוב עם WinAppDriver במגוון שפות תכנות, בדוגמא הזו כאן החלטתי להשתמש ב-#C עם Nunit , להלן הקוד עימו אני פותח את ה-Session אל אפליקציית ה-Sticky Notes:

[SetUp]
public void TestInit()
{
	var appCapabilities = new DesiredCapabilities();
	appCapabilities.SetCapability("app", @"Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe!App");
	appCapabilities.SetCapability("deviceName", "WindowsPC");
	driver = new WindowsDriver(new Uri("http://127.0.0.1:4723"), appCapabilities);
	driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
}

ניתן לראות בדוגמת הקוד הזו כיצד אנחנו משתמשים באובייקט driver מסוג WindowsDriver שהיא מחלקה אשר יורשת ממחלקת AppiumDriver (ושהיא עצמה מממשת את RemoteWebDriver), ניתן לראות את ההירארכיה בצילום המסך הבא:

בהמשך הדרך, כשאנו מגיעים לאיתחול הדרייבר, אנו פונים לכתובת הלוקאלית (במקרה שלנו) עם פורט 4723, שזהו הפורט ברירת מחדל של Appium Server

כעת, כשהדרייבר שלנו מאותחל , אנו יכלים להתחיל לעבוד עימו בכדיי להפעיל את המתודות המוכרות לנו מפרוטוקול ה-WebDriver:

[Test]
public void Test01()
{
	driver.FindElement(By.Id("ContentElement").Click();
        driver.FindElement(By.Id("NoteMenuButton")).Click();
        driver.FindElement(By.Name("All notes")).Click();
}

[TearDown]
public void TestCleanup()
{
	driver.Quit();
}

 

 

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