מדריך לסלניום עם JUnit / TestNG

1. הקדמה

מאמר זה הוא מבוא מהיר ומעשי לעבודה עם סלניום וכתיבת מבחנים עם JUnit ו- TestNG.

2. שילוב סלניום

בחלק זה נתחיל בתרחיש פשוט - פתיחת חלון דפדפן, ניווט לכתובת URL נתונה וחיפוש אחר תוכן רצוי בדף.

2.1. תלות Maven

בתוך ה pom.xml קובץ, הוסף את התלות הבאה:

 org.seleniumhq.selenium selenium-java 3.4.0 

ניתן למצוא את הגרסה האחרונה במאגר המרכזי של Maven.

2.2. תצורת סלניום

ראשית, צור קובץ מחלקה חדש של Java בשם סלניום קונפיג:

SeleniumConfig {נהג WebDriver פרטי; // ...}

בהתחשב בכך שאנחנו משתמשים בגרסת סלניום 3.x, עלינו לציין את הנתיב של הפעלה GeckoDriver קובץ (מבוסס על מערכת ההפעלה שלך) באמצעות מאפיין מערכת הנקרא webdriver.gecko.driver ניתן להוריד את הגרסה האחרונה של GeckoDriver מ- Github Geckodriver Releases.

בואו נתחיל כעת את WebDriver בבנאי נקבע גם 5 שניות כפסק זמן עבור WebDriver לחכות לאלמנט בדף שיופיע:

ציבורי SeleniumConfig () {יכולות יכולות = DesiredCapabilities.firefox (); מנהל התקן = FirefoxDriver חדש (יכולות); driver.manage (). פסק זמן (). implicitlyWait (5, TimeUnit.SECONDS); } סטטי {System.setProperty ("webdriver.gecko.driver", findFile ("geckodriver.mac")); } סטטי פרטי מחרוזת findFile (שם קובץ מחרוזת) {String path [] = {"", "bin /", "target / classes"}; עבור (נתיב מחרוזת: נתיבים) {אם (קובץ חדש (נתיב + שם קובץ). קיים ()) נתיב חזרה + שם קובץ; } להחזיר ""; }

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

בשלב הבא נצטרך ליישם א סלניום לדוגמא מעמד:

מעמד ציבורי SeleniumExample {פרטי SeleniumConfig config; url מחרוזת פרטי = "//www.baeldung.com/"; SeleniumExample () {config = SeleniumConfig חדש (); config.getDriver (). get (url); } // ...}

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

חלל ציבורי closeWindow () {this.config.getDriver (). close (); } ציבורי מחרוזת getTitle () {להחזיר this.config.getDriver (). getTitle (); }

כדי לנווט לחלק אודות של baeldung.com, עלינו ליצור closeOverlay () שיטה שבודקת וסוגרת את הכיסוי בעומס דף הבית. לאחר מכן, אנו עוברים אל דף אודות Baeldung באמצעות getAboutBaeldungPage () שיטה:

חלל ציבורי getAboutBaeldungPage () {closeOverlay (); clickAboutLink (); clickAboutUsLink (); } חלל פרטי closeOverlay () {List webElementList = this.config.getDriver () .findElements (By.tagName ("a")); אם (webElementList! = null) {webElementList.stream () .filter (webElement -> "Close" .equalsIgnoreCase (webElement.getAttribute ("title"))) .filter (WebElement :: isDisplayed) .findAny () .ifPresent ( WebElement :: לחץ); }} חלל ריק clickAboutLink () {פעולות פעולות = פעולות חדשות (config.getDriver ()); WebElement aboutElement = this.config.getDriver () .findElement (By.id ("menu-item-6138")); actions.moveToElement (aboutElement) .perform (); } ריק ריק ריק ClickAboutUsLink () {WebElement element = this.config.getDriver () .findElement (By.partialLinkText ("אודות Baeldung.")); element.click (); }

אנו יכולים לבדוק אם המידע הנדרש זמין בדף המוצג:

public boolean isAuthorInformationAvailable () {להחזיר this.config.getDriver () .getPageSource () .contains ("היי! אני Eugen"); }

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

3. עם JUnit

בואו ניצור כיתת מבחן חדשה כ SeleniumWithJUnitLiveTest:

מעמד ציבורי סלניום WithJUnitLiveTest סלני סטטי פרטי דוגמא סלניום דוגמא; private String expectTitle = "אודות באלדונג 

אנחנו הולכים להשתמש ב- @לפני השיעור ביאור מאת org.junit.BeforeClass לבצע התקנה ראשונית. בזה להכין() שיטה שאנחנו הולכים לאתחל את סלניום לדוגמא לְהִתְנַגֵד:

@BeforeClass ריק סטטי ציבורי setUp () {seleniumExample = חדש SeleniumExample (); }

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

@AfterClass חלל סטטי ציבורי tearDown () {seleniumExample.closeWindow (); }

שימו לב ל סטָטִי משנה על שלנו סלניום לדוגמא משתנה חבר - מכיוון שאנחנו צריכים להשתמש במשתנה זה ב- להכין() ו לקרוע() שיטות סטטיות - @לפני השיעור ו @אחרי השיעור ניתן להפעיל על שיטות סטטיות בלבד.

לבסוף, אנו יכולים ליצור את הבדיקה המלאה שלנו:

@ מבחן פומבי בטל כאשר AboutBaeldungIsLoaded_thenAboutEugenIsMentionedOnPage () {seleniumExample.getAboutBaeldungPage (); מחרוזת actualTitle = seleniumExample.getTitle (); assertNotNull (actualTitle); assertEquals (expectTitle, actualTitle); assertTrue (seleniumExample.isAuthorInformationAvailable ()); }

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

כאשר הבדיקה פועלת, היא פשוט פותחת את כתובת ה- URL ב- Firefox ובהמשך סוגרת אותה לאחר שאומת הכותרת של דף האינטרנט והתוכן.

4. עם TestNG

בואו עכשיו נשתמש ב- TestNG כדי להריץ את מקרה הבדיקה / חבילה שלנו.

שים לב שאם אתה משתמש ב- Eclipse, ניתן להוריד ולהתקין את תוסף TestNG מה- Eclipse Marketplace.

ראשית, בואו ניצור כיתת מבחן חדשה:

מעמד ציבורי SeleniumWithTestNGLiveTest Selenium פרטי לדוגמא SeleniumExample; private String expectTitle = "אודות Baeldung 

נשתמש ב- @BeforeSuite ביאור מאת org.testng.annotations.BeforeSuite כדי להסית את שלנו סלניום מחלקה לדוגמא. ה להכין() השיטה תושק רגע לפני הפעלת חבילת הבדיקה:

@BeforeSuite חלל ציבורי setUp () {seleniumExample = חדש SeleniumExample (); }

באופן דומה, נשתמש ב- @AfterSuite ביאור מאת org.testng.annotations.AfterSuite לסגור את הדפדפן שנפתח לאחר השלמת חבילת הבדיקה:

@AfterSuite פומבי חלל דמעה () {seleniumExample.closeWindow (); }

לבסוף, בוא נבצע את הבדיקה שלנו:

@ מבחן ציבורי בטל כאשר AboutBaeldungIsLoaded_thenAboutEugenIsMentionedOnPage () {seleniumExample.getAboutBaeldungPage (); מחרוזת actualTitle = seleniumExample.getTitle (); assertNotNull (actualTitle); assertEquals (expectTitle, actualTitle); assertTrue (seleniumExample.isAuthorInformationAvailable ()); }

לאחר סיום מוצלח של חבילת הבדיקה, אנו מוצאים דוחות HTML ו- XML ​​ב- פלט מבחן תיקיית הפרויקט. דוחות אלה מסכמים את תוצאות הבדיקה.

5. מסקנה

במאמר מהיר זה, התמקדנו במבוא מהיר לכתיבת מבחני סלניום 3 עם JUnit ו- TestNG.

כמו תמיד, מקור המאמר זמין באתר GitHub.


$config[zx-auto] not found$config[zx-overlay] not found