בניית מסגרת סלניום הינה מונעת-נתונים, מונעת-מילות מפתח והיברידית



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

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

מהי מסגרת סלניום?

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





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

ישנן מספר מסגרות שם, אך 3 מסגרות נפוצות של סלניום הן:



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

מדוע אנו זקוקים למסגרת סלניום?

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

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



היתרונות של מסגרת סלניום

  • שימוש חוזר בקוד מוגבר
  • קריאת קוד משופרת
  • ניידות גבוהה יותר
  • תסריט מופחתתחזוקה

כעת, כשיודעים את יסודות המסגרות, הרשו לי להסביר כל אחד מהם בפירוט.

מסגרת מונעת נתונים

מסגרת מבוססת נתונים בסלניום היא הטכניקה של הפרדת 'מערך הנתונים' לבין 'מקרה הבדיקה' (קוד) בפועל. מסגרת זו תלויה לחלוטין בנתוני מבחן הקלט. נתוני הבדיקה מוזנים ממקורות חיצוניים כגון קובץ Excel, קובץ .CSV או כל בסיס נתונים.

מסגרת מונעת נתונים - מסגרת סלניום - אדוריקה

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

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

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

שימוש באייפצ'י POI עם סלניום WebDriver

WebDriver אינו תומך ישירות בקריאה של קבצי Excel. מכאן אנו משתמשים נקודת עניין של אפאצ'י לקריאה / כתיבה לכל מסמך משרדי של מיקרוסופט. אתה יכול להוריד את נקודת המוצא של אפאצ 'י (קבוצה של קבצי JAR) מ כאן . הורד את קובץ ה- zip או את קובץ הזפת בהתאם לדרישתך והנח אותם יחד עם סט ה- JAR של סלניום.

התיאום בין הקוד הראשי לבין מערך הנתונים יטופל על ידי ספקי נתונים TestNG, שהיא ספרייה שמגיעה כחלק מקבצי ה- JAR של אפאצ'י POI. למטרת הדגמה, יצרתי קובץ אקסל בשם 'LoginCredentials' בו שמורות המשתמש והסיסמאות נשמרו בעמודות שונות.

התבונן בקוד שלמטה כדי להבין את מקרה הבדיקה. זהו קוד פשוט לבדיקת פונקציונליות הכניסה של אפליקציית הזמנת טיסה.

חבילה DataDriven יבוא org.openqa.selenium.By ייבוא ​​org.openqa.selenium.chrome.ChromeDriver יבוא org.testng.Assert יבוא org.testng.annotations.AfterMethod ייבוא ​​org.testng.annotations.DataProvider ייבוא ​​org.testng.annotations.Test מחלקה ציבורית DDTExcel {ChromeDriver driver @Test (dataProvider = 'testdata') public void DemoProject (שם משתמש מחרוזת, סיסמת מחרוזת) זורק InterruptedException {System.setProperty ('webdriver.chrome.driver', 'C: UsersVardhanDownloadschromedriver.exe') הנהג = מנהל התקן ChromeDriver () חדש ('http://newtours.demoaut.com/') driver.findElement (By.name ('userName')). sendKeys (שם משתמש) driver.findElement (By.name ('סיסמה') sendKeys (סיסמה) driver.findElement (By.name ('כניסה')). לחץ על () Thread.sleep (5000) Assert.assertTrue (driver.getTitle (). תואם ('מצא טיסה: סיורי מרקורי: '),' אישורים לא חוקיים ') System.out.println (' ההתחברות הצליחה ')} @ AfterMethod בטל ProgramTermination () {driver.quit ()} @ DataProvider (name =' testdata ') אובייקט ציבורי [] [] TestDa taFeed () {ReadExcelFile config = חדש ReadExcelFile ('C: UsersVardhanworkspaceSeleniumLoginCredentials.xlsx') int שורות = config.getRowCount (0) אובייקט [] [] אישורים = אובייקט חדש [שורות] [2] עבור (int i = 0i

אם שמת לב מלמעלה, יש לנו שיטה בשם 'TestDataFeed ()'. בשיטה זו יצרתי מופע של אובייקט של מחלקה אחרת בשם 'ReadExcelFile'. תוך כדי יישום אובייקט זה, הזנתי את הנתיב של קובץ ה- Excel שלי המכיל את הנתונים. הגדרתי עוד לולאת for לאחזור הטקסט מחוברת העבודה של Excel.

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

חבילה DataDriven יבוא java.io.File ייבוא ​​java.io.FileInputStream ייבוא ​​org.apache.poi.xssf.usermodel.XSSFSheet ייבוא ​​org.apache.poi.xssf.usermodel.XSSFWorkbook מחלקה ציבורית ReadExcelFile {XSSFWorkbook wb XSSFSheet גיליון excelPath) {נסה {File src = קובץ חדש (excelPath) FileInputStream fis = חדש FileInputStream (src) wb = XSSFWorkbook חדש (fis)} לתפוס (חריג e) {System.out.println (e.getMessage ())}} ציבורי מחרוזת getData (int sheetnumber, int שורה, int עמודה) {sheet = wb.getSheetAt (sheetnumber) נתוני מחרוזת = sheet.getRow (שורה). GetCell (עמודה) .getStringCellValue () להחזיר נתונים} public int getRowCount int (int sheetIndex) { שורה שורה = wb.getSheetAt (sheetIndex) .getLastRowNum () שורה = שורה + שורה חוזרת אחת}}

שימו לב ראשית לספריות שייבאתי. ייבאתי אפאצ'י POI XSSF ספריות המשמשות לקריאה / כתיבה של נתונים לקבצי Excel. כאן יצרתי קונסטרוקטור (אובייקט מאותה שיטה) שיעביר את הערכים: מספר גיליון, מספר שורה ומספר עמודות. כדי להבין את המסגרת הזו טוב יותר, אני מבקש שתעבור על הסרטון שלהלן, שם הסברתי זאת בצורה מובנית.

מסגרת מונעת נתונים ב- Selenium WebDriver | מדריך סלניום

עכשיו בואו נעבור למסגרת, כלומר מסגרת מונעת מילות מפתח.

מסגרת מונעת מילות מפתח

מסגרת מונעת מילות מפתח היא טכניקה בה כל הפעולות וההוראות שיבוצעו נכתבות בנפרד ממקרה הבדיקה בפועל. הדמיון שיש לו במסגרת Data Driven הוא שהפעולות שיש לבצע מאוחסנות שוב בקובץ חיצוני כמו גיליון Excel.

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

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

כיצד להעתיק עמוק בג'אווה - -

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

חבילה KeywordDriven יבוא org.openqa.selenium.chrome.ChromeDriver יבוא org.testng.Assert יבוא org.testng.annotations.Test יבוא java.util.concurrent.TimeUnit יבוא org.openqa.selenium.By ייבוא ​​org.openqa.selenium.WebDriver פעולות מחלקה ציבורית {נהג סטטי ציבורי WebDriver סטטי ציבורי ריק ריק OpenBrowser () {System.setProperty ('webdriver.chrome.driver', 'C: UsersVardhanDownloadschromedriver.exe') הנהג = ChromeDriver חדש ()} חלל סטטי ציבורי לנווט () {driver .manage (). פסק זמן (). implicitlyWait (10, TimeUnit.SECONDS) driver.get ('http://newtours.demoaut.com')} חלל סטטי ציבורי input_Username () {driver.findElement (By.name (') sendKeys ('כספית')} חלל ריק סטטי input_Password () {driver.findElement (By.name ('סיסמה')). sendKeys ('כספית')} ריק סטטי ציבורי click_Login () {driver.findElement (By.name ('כניסה')). לחץ על ()} @Test סטטי ציבורי ריק ריק_הכניסה () {String pageTitle = driver.getTitle () Assert.assertEquals (pageTitle, 'Find a Flight: Mercury Tours : ')} חלל סטטי ציבורי closeBrowser () {driver.quit ()}}

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

קובץ הכיתה המפעיל את השיטות, הוא זה.

חבילה KeywordDriven מחלקה ציבורית DriverScript {public static void main (String [] args) זורק Exception {// הצהרת הנתיב של קובץ ה- Excel עם שם קובץ ה- Excel String sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // כאן אנו מעבירים את נתיב ה- Excel ו- SheetName כארגומנטים להתחברות לקובץ Excel ReadExcelData.setExcelFile (sPath, 'Sheet1') // ערכים מקודדים קשים משמשים לעת עתה בשורות ועמודות // ערכים מקודדים קשים משמשים לשורת Excel & עמודות לעת עתה // בפרקים מאוחרים יותר נחליף את הערכים המקודדים הקשים הללו עם varibales // זו הלולאה לקריאת הערכים של העמודה 3 (מילת מפתח לפעולה) שורה אחר שורה עבור (int iRow = 1iRow<=7iRow++) { String sActions = ReadExcelData.getCellData(iRow, 1) //Comparing the value of Excel cell with all the keywords in the 'Actions' class if(sActions.equals('openBrowser')) { //This will execute if the excel cell value is 'openBrowser' //Action Keyword is called here to perform action Actions.openBrowser() } else if(sActions.equals('navigate')) { Actions.navigate() } else if(sActions.equals('input_Username')) { Actions.input_Username() } else if(sActions.equals('input_Password')) { Actions.input_Password() } else if(sActions.equals('click_Login')) { Actions.click_Login() } else if(sActions.equals('verify_Login')) { Actions.verify_login() } else if(sActions.equals('closeBrowser')) { Actions.closeBrowser() } } } } 

וקובץ הכיתה שקורא את ערכי Excel הוא זה.

חבילה KeywordDriven יבוא java.io.FileInputStream ייבוא ​​org.apache.poi.xssf.usermodel.XSSFS גיליון ייבוא ​​org.apache.poi.xssf.usermodel.XSSF עבודת ספר ייבוא ​​org.apache.poi.xssf.usermodel.XSSFCell מחלקה ציבורית ReadexcelData {פרטי XSSFS גיליון ExcelWSheet פרטי סטטי XSSFWorkbook ExcelWBook סטטי פרטי XSSFCell // שיטה זו היא להגדיר את נתיב הקובץ ולפתוח את קובץ Excel // להעביר נתיב Excel ו- SheetName כטיעונים לשיטה זו זורק סטטי ריק חלל סטטיExcelFile (נתיב מחרוזת, שם מחרוזת) זורק חריג {FileInputStream ExcelFile = FileInputStream חדש (נתיב) ExcelWBook = XSSF חדש workbook (ExcelFile) ExcelWSheet = ExcelWBook.getSheet (SheetName)} // שיטה זו היא לקרוא את נתוני הבדיקה מתא ה- Excel // בזה אנו מעבירים פרמטרים / ארגומנטים כאשר שורה מס 'ונקודה קולית מחרוזת סטטית ציבורית getCellData (int RowNum, int ColNum) זורק Exception {Cell = ExcelWSheet.getRow (RowNum) .getCell (ColNum) String CellData = Cell.getStringCellValue () return CellData}}

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

מסגרת היברידית

מסגרת היברידית היא טכניקה שבה נוכל להשתמש בצורה הטובה ביותר בשתי מסגרות סלניום מונעות נתונים ומונעות מילות מפתח. באמצעות הדוגמאות המוצגות לעיל בבלוג זה, אנו יכולים לבנות מסגרת היברידית על ידי אחסון השיטות לביצוע בקובץ Excel (גישה מונעת מילות מפתח) והעברת שמות שיטות אלה אל מחלקת השתקפות Java (גישה מונחת נתונים) במקום ליצור אחרת לולאה במחלקה 'DriverScript'.

התבונן בשיעור 'DriverScript' ששונה בקטע הקוד שלהלן.כאן, במקום להשתמש במספר לולאות If / Else, משתמשים בגישה מונעת נתונים לקריאת שמות השיטות מקובץ ה- Excel.

חבילה HybridFramework ייבא java.lang.reflect.Method מחלקה ציבורית DriverScriptJava {// זהו אובייקט מחלקתי, המוכרז כ'סטטי ציבורי '// כך שניתן להשתמש בו מחוץ לתחום הראשי [] שיטה ציבורית סטטית פעולות מילות מפתח סטטי ציבורי מחרוזת sAtions // זהו אובייקט מחלקה השתקפות, המוכרז כ'סטטי ציבורי '// כך שניתן להשתמש בו מחוץ לתחום הראשי [] השיטה הציבורית שיטת שיטה [] הציבור סטטי ריק ריק (מחרוזת [] טוענת) זורק חריג {// הכרזת הנתיב של קובץ ה- Excel עם שם קובץ ה- Excel String sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // כאן אנו מעבירים את נתיב ה- Excel ו- SheetName כדי להתחבר לקובץ ה- Excel // שיטה זו נוצר בעבר ReadExcelData.setExcelFile (sPath, 'Sheet1') // ערכים מקודדים קשיחים משמשים לעת עתה לשורות ועמודות של Excel // בהמשך, נשתמש בערך המקודד הקשיח הזה הרבה יותר יעיל // זו הלולאה לקריאה את הערכים של העמודה (מילת מפתח לפעולה) לפי שורה // המשמעות היא שלולאה זו תבצע את כל השלבים שהוזכרו למקרה הבדיקה בגיליון שלבי המבחן עבור (int iRow = 1iRow<=7iRow++) { sActions = ReadExcelData.getCellData(iRow, 1) //A new separate method is created with the name 'execute_Actions' //You will find this method below of the this test //So this statement is doing nothing but calling that piece of code to execute execute_Actions() } } //This method contains the code to perform some action //As it is completely different set of logic, which revolves around the action only, it makes sense to keep it separate from the main driver script //This is to execute test step (Action) private static void execute_Actions() throws Exception { //Here we are instantiating a new object of class 'Actions' actionKeywords = new Actions() //This will load all the methods of the class 'Actions' in it. //It will be like array of method, use the break point here and do the watch method = actionKeywords.getClass().getMethods() //This is a loop which will run for the number of actions in the Action Keyword class //method variable contain all the method and method.length returns the total number of methods for(int i = 0i

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

מסגרת סלניום באמצעות Java | מדריך סלניום | הדרכה מקוונת בסלניום

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

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

יש לך שאלה עבורנו? אנא הזכיר זאת בסעיף ההערות ונחזור אליך.