webdriver listeners selenium
Τι είναι οι ακροατές του WebDriver; Γιατί χρειαζόμαστε ακροατές στη δοκιμή αυτοματισμού σεληνίου; Αυτό το σεμινάριο απαντά λεπτομερώς σε αυτές τις ερωτήσεις με δείγματα κώδικα παραδείγματος:
Οι ακροατές, όπως υποδηλώνει το όνομα, 'ακούστε' κάθε συμβάν που ορίζεται στον κωδικό Selenium. Για παράδειγμα, αν θέλετε να μάθετε τι συμβαίνει πριν κάνετε κλικ σε οποιοδήποτε στοιχείο. πριν και μετά την πλοήγηση σε ένα στοιχείο ή τι συμβαίνει όταν μια εξαίρεση ρίχνεται και η δοκιμή αποτύχει, οι ακροατές έρχονται σε πρακτικό.
Η πρακτική χρήση των ακροατών στο Selenium Automation Testing θα μπορούσε να είναι η καταγραφή της σειράς των ενεργειών και η λήψη του στιγμιότυπου οθόνης όταν και όταν ρίχνεται μια Εξαίρεση. Αυτό διευκολύνει τον εύκολο εντοπισμό σφαλμάτων σε μεταγενέστερα στάδια της δοκιμής εκτέλεσης.
=> Δείτε όλα τα σεμινάρια σεληνίου εδώ.
Τι θα μάθετε:
Υλοποίηση ακροατών Webdriver
Υπάρχουν κυρίως δύο τύποι ακροατών:
- Ακροατές Webdriver
- Ακροατές TestNG
Θα καταλάβουμε πρώτα πώς λειτουργούν οι ακροατές Webdriver. Σε αυτό το σεμινάριο, η εστίασή μας θα είναι στο πρόγραμμα ακρόασης συμβάντων του Webdriver.
Γιατί χρησιμοποιούμε το πρόγραμμα ακρόασης συμβάντων Webdriver;
Με τη βοήθεια του Webdriver, είμαστε σε θέση να ενεργοποιήσουμε πολλά συμβάντα στο πρόγραμμα περιήγησης και στο Web. Παρακολουθεί όλα τα συμβάντα που ενεργοποιούνται κατά την εκτέλεση και μπορεί να μας βοηθήσει στον εντοπισμό σφαλμάτων όταν ολοκληρωθεί η εκτέλεση.
Υπάρχουν δύο τρόποι με τους οποίους μπορούμε να εφαρμόσουμε το πρόγραμμα ακρόασης συμβάντων Webdriver:
- WebDriverEventListener που είναι μια διεπαφή που έχει ορισμένες προκαθορισμένες μεθόδους για την παρακολούθηση των συμβάντων του Webdriver. Απαιτεί να εφαρμόσουμε ΟΛΑ τις προκαθορισμένες μεθόδους στη διεπαφή.
- AbstractWebDriverEventListener Class που μας παρέχει τη δυνατότητα εφαρμογής μόνο εκείνων των μεθόδων για τις οποίες μας ενδιαφέρουν.
# 1) Διεπαφή WebDriverEventListener
Οι προκαθορισμένες μέθοδοι που χρησιμοποιούνται για την εφαρμογή της διεπαφής WebDriverEventListener παρατίθενται παρακάτω:
(i) άκυρο beforeChangeValueOf (WebElement arg0, WebDriver arg1, CharSequence () arg2)
Αυτή η μέθοδος ενεργοποιείται όταν εκτελούμε είτε τη λειτουργία sendKeys () είτε την εκκαθάριση () στο Στοιχείο Web. (Για παράδειγμα, driver.findElement (By.id ('Login')). Clear ()) και ενεργοποιείται ΠΡΙΝ εκτέλεση της λειτουργίας στο Στοιχείο Web.
Παράμετροι:
arg0= Web Element arg1=driver
(ii) άκυρο afterChangeValueOf (WebElement arg0, WebDriver arg1, CharSequence () arg2)
Αυτή η μέθοδος ενεργοποιείται όταν εκτελούμε είτε τη λειτουργία sendKeys () είτε την εκκαθάριση () στο Στοιχείο Web. (Για παράδειγμα, driver.findElement (By.id ('Login')). Clear ()) και ενεργοποιείται ΜΕΤΑ εκτέλεση της λειτουργίας στο Στοιχείο Web.
Παράμετροι:
arg0= Web Element arg1=driver
(iii) άκυρο πρινClickOn (WebElement arg0, WebDriver arg1)
Αυτή η μέθοδος ενεργοποιείται ΠΡΙΝ κάνουμε κλικ σε οποιοδήποτε στοιχείο Web.
Παράμετροι:
arg0= Web Element arg1=driver
(iv) άκυρο afterClickOn (WebElement arg0, WebDriver arg1)
ποιο είναι το καλύτερο αναδυόμενο μπλοκ για το χρώμιο
Αυτή η μέθοδος ενεργοποιείται ΜΕΤΑ κάνουμε κλικ σε οποιοδήποτε στοιχείο Web.
Παράμετροι:
arg0= Web Element arg1=driver
(v) άκυρο πρινNavigateTo (String arg0, WebDriver arg1)
Αυτή η μέθοδος ενεργοποιείται όταν χρησιμοποιούμε navigate (). To (String URL) (Για παράδειγμα, navigate (). To ('https: // www.google.com ')), Και ενεργοποιείται ΠΡΙΝ πλοήγηση στη διεύθυνση URL.
Παράμετροι:
arg0= URL arg1=driver
(vi) άκυρο afterNavigateTo (String arg0, WebDriver arg1)
Αυτή η μέθοδος ενεργοποιείται όταν χρησιμοποιούμε navigate (). To (String URL) (Για παράδειγμα, navigate (). To ('https: // www.google.com ')), Και ενεργοποιείται ΜΕΤΑ πλοήγηση στη διεύθυνση URL.
Παράμετροι:
arg0= URL arg1=driver
(vii) άκυρο πρινNavigateBack (WebDriver arg0)
Αυτή η μέθοδος ενεργοποιείται όταν χρησιμοποιούμε την εντολή navigate (). Back (). Διεξάγεται ΠΡΙΝ ανακατεύθυνση του χρήστη στην προηγούμενη σελίδα.
Παράμετροι:
arg0=driver
(viii) άκυρο afterNavigateBack (WebDriver arg0)
Αυτή η μέθοδος ενεργοποιείται όταν χρησιμοποιούμε την εντολή navigate (). Back (). Διεξάγεται ΜΕΤΑ ανακατεύθυνση του χρήστη στην προηγούμενη σελίδα.
Παράμετροι:
arg0=driver
(ix) άκυρο πρινNavigateForward (WebDriver arg0)
Αυτή η μέθοδος ενεργοποιείται όταν χρησιμοποιούμε την εντολή navigate (). Forward (). Διεξάγεται ΠΡΙΝ ανακατεύθυνση του χρήστη στην επόμενη σελίδα.
Παράμετροι:
arg0=driver
(x) άκυρο afterNavigateBack (WebDriver arg0)
Αυτή η μέθοδος ενεργοποιείται όταν χρησιμοποιούμε την εντολή navigate (). Forward (). Διεξάγεται ΜΕΤΑ ανακατεύθυνση του χρήστη στην επόμενη σελίδα.
Παράμετροι:
arg0=driver
(xi) άκυρο πρινNavigateRefresh (WebDriver arg0)
Αυτή η μέθοδος ενεργοποιείται όταν χρησιμοποιούμε την εντολή navigate (). Refresh (). Διεξάγεται ΠΡΙΝ ανανέωση της τρέχουσας σελίδας.
Παράμετροι:
arg0=driver
(xii) άκυρο afterNavigateRefresh (WebDriver arg0)
Αυτή η μέθοδος ενεργοποιείται όταν χρησιμοποιούμε την εντολή navigate (). Refresh (). Διεξάγεται ΜΕΤΑ ανανέωση της τρέχουσας σελίδας.
Παράμετροι:
arg0=driver
(xiii) άκυρο πρινFindBy (Από arg0, WebElement arg1, WebDriver arg2)
Αυτή η μέθοδος ενεργοποιείται όταν χρησιμοποιούμε την εντολή driver.findElement (By.id ('Κάποιο αναγνωριστικό ή οποιοσδήποτε άλλος εντοπιστής')) . Διεξάγεται ΠΡΙΝ βρείτε το Στοιχείο Ιστού.
Παράμετροι:
arg0=locator arg1=Web Element arg2=driver
(xiv) άκυρο afterFindBy (Από arg0, WebElement arg1, WebDriver arg2)
Αυτή η μέθοδος ενεργοποιείται όταν χρησιμοποιούμε την εντολή driver.findElement (By.id ('Κάποιο αναγνωριστικό ή οποιοσδήποτε άλλος εντοπιστής')) . Διεξάγεται ΜΕΤΑ βρείτε το Στοιχείο Ιστού.
Παράμετροι:
πρώτη αναζήτηση βάθους c ++
arg0=locator arg1=Web Element arg2=driver
(xv) άκυρο onException (Throwable arg0, WebDriver arg1)
Αυτή η μέθοδος ρίχνεται κάθε φορά που υπάρχει εξαίρεση. Για παράδειγμα, εάν το Webdriver δεν είναι σε θέση να βρει το στοιχείο, θα ενεργοποιήσει αυτήν τη μέθοδο και θα εκτελούσε όποιο κώδικα είναι γραμμένο μέσα σε αυτό.
Παράμετροι:
arg0=Exception arg1= driver
(xvi) άκυρο πρινAlertAccept (WebDriver arg0)
Αυτή η μέθοδος ενεργοποιείται όποτε εμφανίζεται ένα πλαίσιο ειδοποίησης στην οθόνη και ενεργοποιείται δεξιά ΠΡΙΝ κάνοντας κλικ στο κουμπί 'ΟΚ ή ΑΠΟΔΟΧΗ'.
Παράμετροι:
arg0=driver
(xvii) άκυρο afterAlertAccept (WebDriver arg0)
Αυτή η μέθοδος ενεργοποιείται όποτε εμφανίζεται ένα πλαίσιο ειδοποίησης στην οθόνη και ενεργοποιείται δεξιά ΜΕΤΑ κάνοντας κλικ στο κουμπί 'ΟΚ ή ΑΠΟΔΟΧΗ'.
Παράμετροι:
arg0=driver
(xviii) άκυρο πρινAlertDismiss (WebDriver arg0)
Αυτή η μέθοδος ενεργοποιείται κάθε φορά που εμφανίζεται ένα πλαίσιο ειδοποίησης στην οθόνη και ενεργοποιείται δεξιά ΠΡΙΝ κάνοντας κλικ στο κουμπί 'ΑΚΥΡΩΣΗ'.
Παράμετροι:
arg0=driver
(xix) void afterAlertDismiss (WebDriver arg0)
Αυτή η μέθοδος ενεργοποιείται όποτε εμφανίζεται ένα πλαίσιο ειδοποίησης στην οθόνη και ενεργοποιείται δεξιά ΜΕΤΑ κάνοντας κλικ στο κουμπί 'ΑΚΥΡΩΣΗ'.
Παράμετροι:
arg0=driver
Αυτές είναι όλες οι διαθέσιμες μέθοδοι WebDriverEventListener. Υπάρχουν άλλες δύο μέθοδοι πριν και μετά, αλλά δεν πρόκειται να καλύψουμε αυτές σε αυτό το σεμινάριο.
Βήματα για την εφαρμογή ακροατών με τη βοήθεια της διεπαφής 'WebDriverEventListener' στο Eclipse:
Βήμα 1: Δημιουργήστε ένα πακέτο με όνομα ως 'Ακούστες'. Μέσα σε αυτό το πακέτο, δημιουργήστε μια τάξη που ονομάζεται ' WebdriverListeners Και αφήστε το να εφαρμοστεί 'WebDriverEventListener' .
Το περιβάλλον χρήστη θα πρέπει να έχει την εξής μορφή:
Τοποθετήστε το ποντίκι σας πάνω από την κόκκινη γραμμή με το Σφάλμα, το Eclipse θα πρέπει να ρίξει την παρακάτω πρόταση για εισαγωγή του 'WebDriverEventListener'. Κάντε κλικ στο Εισαγωγή.
Έγινε έξοδος από το σφάλμα στο WebDriverEventListener, αλλά θα δείτε το παρακάτω σφάλμα στην κλάση 'WebDriverListeners'. Μετακινήστε τον κέρσορα πάνω από το σφάλμα και θα δείτε μια πρόταση για προσθήκη μεθόδων χωρίς εφαρμογή. Κάντε κλικ σε αυτό και θα δείτε όλες τις μεθόδους που αναφέρονται και περιγράφονται παραπάνω.
Λάβετε υπόψη ότι έχουμε προσθέσει τη γραμμή System.out.println σε κάθε μέθοδο για σκοπούς επίδειξης.
Δείγμα κώδικα-1
package Listeners; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.events.WebDriverEventListener; public class WebDriverListeners implements WebDriverEventListener { @Override public void afterAlertAccept(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('After Alert Accept '+arg0.toString() ); } @Override public void afterAlertDismiss(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('After Alert Dismiss '+ arg0); } @Override public void afterChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence() arg2) { // TODO Auto-generated method stub System.out.println('After value change of' +arg0); } @Override public void afterClickOn(WebElement arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('After clicked'+arg0); } @Override public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) { // TODO Auto-generated method stub System.out.println('After Find By'+arg1); } @Override public void afterNavigateBack(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('After Navigate Back'); } @Override public void afterNavigateForward(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('After Navigate Forward'); } @Override public void afterNavigateRefresh(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('On Navigating Refresh'); } @Override public void afterNavigateTo(String arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('On Navigating To'+arg0); } @Override public void afterScript(String arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('After Script'); } @Override public void beforeAlertAccept(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Alert Accept'); } @Override public void beforeAlertDismiss(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Alert Dismiss'); } @Override public void beforeChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence() arg2) { // TODO Auto-generated method stub System.out.println('Before Change Value of'+arg0); } @Override public void beforeClickOn(WebElement arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('Before Click on'+arg0); } @Override public void beforeFindBy(By arg0, WebElement arg1, WebDriver arg2) { // TODO Auto-generated method stub System.out.println('Before Find By'+arg0); } @Override public void beforeNavigateBack(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Navigate Back'); } @Override public void beforeNavigateForward(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Navigate Forward'); } @Override public void beforeNavigateRefresh(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Navigate Refresh'); } @Override public void beforeNavigateTo(String arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('Before Navigate To'+arg0); } @Override public void beforeScript(String arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('Before Script'); } @Override public void onException(Throwable arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('On Exception'+arg0); } }
Βήμα 2: Δημιουργήστε τάξεις Listeners_Tests και βεβαιωθείτε ότι έχει την κύρια μέθοδο μέσα στην τάξη. Αφήστε το να επεκτείνει την κλάση WebDriverListeners έτσι ώστε η κλάση ακροατή να μπορεί να εκτελέσει μια λειτουργία στις εντολές του προγράμματος περιήγησης που έχουν οριστεί για συγκεκριμένα συμβάντα.
Αντιγράψτε και επικολλήστε τον παρακάτω κώδικα στην τάξη Listeners_Tests. Εκτελέστε τον παρακάτω κώδικα όπως η εφαρμογή Java.
Δείγμα κώδικα-2
package Listeners; import java.util.Arrays; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.Proxy; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.support.events.EventFiringWebDriver; public class Listeners_Tests extends WebDriverListeners{ static WebElement e; static ChromeDriver driver; public static void main(String() args) throws InterruptedException { // TODO Auto-generated method stub System.setProperty('webdriver.chrome.driver', 'E:\chromedriver.exe'); /*Setting the capabilities of Chrome Driver*/ try { DesiredCapabilities capabilities = DesiredCapabilities.chrome(); Proxy proxy = new Proxy(); String proxyServer = String.format('AProxyIDontWantToDisplay', System.getenv('proxy.username'), System.getenv('proxy.password')); proxy.setHttpProxy(proxyServer); capabilities.setCapability('proxy', proxy); ChromeOptions options = new ChromeOptions(); options.addArguments(Arrays.asList ('--no-sandbox','--ignore-certificate-errors','--homepage=about:blank','--no-first-run')); options.addArguments('disable-infobars'); capabilities.setCapability(ChromeOptions.CAPABILITY, options); driver = new ChromeDriver(capabilities); } catch (Exception e) { throw new Error(e); } /*---- Creating the instance of EventFiringWebDriver Class----*/ EventFiringWebDriver eventRecorder = new EventFiringWebDriver(driver); /*---- Creating the instance of parent class 'WebdriverListeners' class----*/ WebDriverListeners eCapture = new WebDriverListeners(); /* The below step registers the listeners for logging purpose*/ eventRecorder.register(eCapture); //Event One System.out.println('This is recording Event-One'); eventRecorder.navigate().to('https://www.google.com'); //Event Two System.out.println('This is recording Event-Two'); eventRecorder.findElement(By.xpath('//a(text()='Sign in')')).click(); //Event Three System.out.println('This is recording Event-Three'); eventRecorder.findElement(By.id('identifierId')).clear(); Thread.sleep(5000); //Event Four System.out.println('This is recording Event-Four'); eventRecorder.findElement(By.id('identifierId')).sendKeys('abc@gmail.com'); Thread.sleep(5000); //Event Five System.out.println('This is recording Event-Five'); eventRecorder.navigate().back(); //Event Six System.out.println('This is recording Event-Six'); eventRecorder.navigate().forward(); //Event Seven System.out.println('This is recording Event-Seven'); eventRecorder.navigate().refresh(); //Event Eight System.out.println('This is recording Event-Eight'); eventRecorder.get('https://www.irctc.co.in/eticketing/loginHome.jsf'); //Event Nine System.out.println('This is recording Event-Nine'); eventRecorder.findElement(By.id('loginbutton')).click(); try { Alert alert = eventRecorder.switchTo().alert(); // check if alert exists // TODO find better way alert.getText(); //Event Ten System.out.println('This is recording Event-Ten'); alert.accept(); } catch (Exception e) { } Thread.sleep(3000); eventRecorder.findElement(By.id('loginbutton')).click(); try { Alert alert = eventRecorder.switchTo().alert(); // check if alert exists // TODO find better way alert.getText(); //Event Eleven System.out.println('This is recording Event-Eleven'); alert.dismiss(); } catch (Exception e) { } //Intentionally giving wrong id so it triggers onException Listener--> Event Twelve System.out.println('This is recording Event-Twelve'); eventRecorder.findElement(By.id('loginbutn')).click(); } }
Αφού ολοκληρωθεί με επιτυχία η εκτέλεση, ελέγξτε τα περιεχόμενα που έχουν συνδεθεί στην κονσόλα. Θα πηγαίνουμε σε κάθε εκδήλωση που αναφέρεται στον παραπάνω κώδικα.
Απόσπασμα # 1 της κονσόλας
Εκδήλωση-1: Αυτό καταγράφει το συμβάν πριν από το NavigateTo και afterNavigateTo και εκτελεί τις ενέργειες που γράφονται στα δύο μπλοκ ανάλογα.
Εκδήλωση-2: Αυτό καταγράφει το συμβάν πριν από το FindBy και afterFindBy και εκτελεί τις ενέργειες που γράφονται στα δύο μπλοκ ανάλογα. Το συμβάν μετά από αυτά τα δύο συμβάντα καλύπτει τα γεγονότα BeforeClick και AfterClick.
Εκδήλωση-3: Αυτό καταγράφει τα γεγονότα BeforeChangeValueOf και afterChangeValue.
Εκδήλωση-4: Αυτό είναι ίδιο με το Event-3
Εκδήλωση-5: Αυτό καταγράφει γεγονότα πριν από το NavigateBack και afterNavigateBack.
πρότυπο αναφοράς εκτέλεσης δοκιμής στο excel
Εκδήλωση-6: Αυτό καταγράφει γεγονότα πριν από το NavigateForward και afterNavigateForward.
Εκδήλωση-7: Αυτό καταγράφει τα γεγονότα πριν από το NavigateRefresh και afterNavigateRefresh.
Εκδήλωση-8: Αυτό είναι ίδιο με το Event-1
Εκδήλωση-9: Αυτό είναι ίδιο με το Event-2
Απόσπασμα # 2 της κονσόλας
Εκδήλωση-10: Αυτό καταγράφει τα συμβάντα όπως πρινAlertAccept και afterAlertAccept.
Εκδήλωση-11: Αυτό καταγράφει τα συμβάντα όπως πρινAlertDismiss και afterAlertDismiss.
Εκδήλωση-12: Αυτό καταγράφει τα συμβάντα όπως το onException και ρίχνει το μήνυμα.
Ελπίζω ότι η σύντομη περιγραφή των ακροατών θα σας δώσει μια ιδέα για το πώς λειτουργούν οι ακροατές του Webdriver. Όπως είπαμε προηγουμένως ότι με τη βοήθεια του WebDriverEventListener, πρέπει να εφαρμόσουμε όλες τις διαθέσιμες μεθόδους με αυτήν τη διεπαφή.
Ωστόσο, με τη βοήθεια της κλάσης AbstractWebDriverEventListener, μπορούμε να επιλέξουμε ποια συμβάντα θέλουμε να εφαρμόσουμε.
# 2) AbstractWebDriverEventListener Class
Βήματα για την εφαρμογή των ακροατών χρησιμοποιώντας την κατηγορία 'AbstractWebDriverEventListener':
Βήμα 1
Δημιουργήστε μια τάξη ' AbstractWebDriverListener 'Και αφήστε το να επεκτείνει την τάξη' AbstractWebDriverEventListener '
Όπως μπορείτε να δείτε, σε αντίθεση με ' WebDriverEventListener ', Αυτή η τάξη όταν επεκταθεί δεν ρίχνει σφάλμα για την προσθήκη μη εφαρμοσμένων μεθόδων. Μπορείτε να επιλέξετε τις μεθόδους που θέλετε να εφαρμόσετε στο έργο σας.
Αντιγράψτε και επικολλήστε τον παρακάτω κώδικα:
Δείγμα κώδικα-3
package Listeners; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.events.AbstractWebDriverEventListener; public class AbstractWebDriverListeners extends AbstractWebDriverEventListener{ public void afterChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence() arg2) { // TODO Auto-generated method stub System.out.println('After value change of' +arg0); } public void afterClickOn(WebElement arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('After clicked'+arg0); } public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) { // TODO Auto-generated method stub System.out.println('After Find By'+arg1); } public void beforeChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence() arg2) { // TODO Auto-generated method stub System.out.println('Before Change Value of'+arg0); } public void beforeClickOn(WebElement arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('Before Click on'+arg0); } public void beforeFindBy(By arg0, WebElement arg1, WebDriver arg2) { // TODO Auto-generated method stub System.out.println('Before Find By'+arg0); } }
Βήμα 2
Δημιουργήστε μια νέα τάξη με το όνομα ' AbstractListeners_Test 'Και μέσα σε αυτό, δημιουργήστε την παρουσία του' AbstractWebDriverListeners 'Τάξη.
Αντιγράψτε-επικολλήστε τον παρακάτω κώδικα μέσα σε αυτήν την τάξη.
Δείγμα κώδικα-4
package Listeners; import java.util.Arrays; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.Proxy; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.support.events.EventFiringWebDriver; public class AbstractListeners_Tests extends WebDriverListeners{ static WebElement e; static ChromeDriver driver; public static void main(String() args) throws InterruptedException { // TODO Auto-generated method stub System.setProperty('webdriver.chrome.driver', 'E:\chromedriver.exe'); /*Setting the capabilities of Chrome Driver*/ try { DesiredCapabilities capabilities = DesiredCapabilities.chrome(); Proxy proxy = new Proxy(); String proxyServer = String.format('AProxyIDontWantToDisplay', System.getenv('proxy.username'), System.getenv('proxy.password')); proxy.setHttpProxy(proxyServer); capabilities.setCapability('proxy', proxy); ChromeOptions options = new ChromeOptions(); options.addArguments(Arrays.asList ('--no-sandbox','--ignore-certificate-errors','--homepage=about:blank','--no-first-run')); options.addArguments('disable-infobars'); capabilities.setCapability(ChromeOptions.CAPABILITY, options); driver = new ChromeDriver(capabilities); } catch (Exception e) { throw new Error(e); } /*---- Creating the instance of EventFiringWebDriver Class----*/ EventFiringWebDriver eventRecorder = new EventFiringWebDriver(driver); /*---- Creating the instance of parent class 'AbstractWebdriverListeners' class----*/ AbstractWebDriverListeners eCapture = new AbstractWebDriverListeners(); /* The below step registers the listeners for logging purpose*/ eventRecorder.register(eCapture); //Event One System.out.println('This is recording Event-One'); eventRecorder.navigate().to('https://www.google.com'); //Event Two System.out.println('This is recording Event-Two'); eventRecorder.findElement(By.xpath('//a(text()='Sign in')')).click(); //Event Three System.out.println('This is recording Event-Three'); eventRecorder.findElement(By.id('identifierId')).clear(); Thread.sleep(5000); //Event Four System.out.println('This is recording Event-Four'); eventRecorder.findElement(By.id('identifierId')).sendKeys('abc@gmail.com'); Thread.sleep(5000); //Event Five System.out.println('This is recording Event-Five'); eventRecorder.navigate().back(); //Event Six System.out.println('This is recording Event-Six'); eventRecorder.navigate().forward(); //Event Seven System.out.println('This is recording Event-Seven'); eventRecorder.navigate().refresh(); //Event Eight System.out.println('This is recording Event-Eight'); eventRecorder.get('https://www.irctc.co.in/eticketing/loginHome.jsf'); //Event Nine System.out.println('This is recording Event-Nine'); eventRecorder.findElement(By.id('loginbutton')).click(); try { Alert alert = eventRecorder.switchTo().alert(); // check if alert exists // TODO find better way alert.getText(); //Event Ten System.out.println('This is recording Event-Ten'); alert.accept(); } catch (Exception e) { } Thread.sleep(3000); eventRecorder.findElement(By.id('loginbutton')).click(); try { Alert alert = eventRecorder.switchTo().alert(); // check if alert exists // TODO find better way alert.getText(); //Event Eleven System.out.println('This is recording Event-Eleven'); alert.dismiss(); } catch (Exception e) { } //Intentionally giving wrong id so it triggers onException Listener--> Event Twelve System.out.println('This is recording Event-Twelve'); eventRecorder.findElement(By.id('loginbutn')).click(); } }
Αυτή η τάξη έχει επίσης τα συμβάντα που έχουν καταγραφεί νωρίτερα, αλλά επειδή έχουμε περιορίσει την κλάση ακροατή μας για να εφαρμόσει μόνο έξι συμβάντα, θα απορρίψει άλλα και θα εμφανίσει μόνο το αρχείο καταγραφής για αυτά που αναφέρονται.
Προβολή παραθύρου κονσόλας
Όπως μπορείτε να δείτε τις περιοχές με κίτρινη σήμανση στην παραπάνω εικόνα, μόνο οι μέθοδοι που έχουν εφαρμοστεί στο AbstractWebDriverListeners Η τάξη έχει ενεργοποιηθεί.
συμπέρασμα
Οι ακροατές WebDriver είναι οι διεπαφές που ακούνε ένα συμβάν προγράμματος περιήγησης και ανταποκρίνονται ανάλογα. Εάν το εφαρμόσετε με τη βοήθεια του WebDriverEventListener, πρέπει να εφαρμόσετε όλες τις μεθόδους που περιλαμβάνονται σε αυτήν τη διεπαφή
Εάν εφαρμόσετε το WebDriver Listener με τη βοήθεια της κλάσης AbstractWebDriverEventListener, μπορείτε να επιλέξετε τις μεθόδους που θέλετε να εφαρμόσετε.
=> Επισκεφθείτε εδώ για να μάθετε το σελήνιο από το μηδέν.
Συνιστώμενη ανάγνωση
- Cucumber Selenium Tutorial: Αγγούρι Java Selenium WebDriver Integration
- Εισαγωγή στο Selenium WebDriver - Selenium Tutorial # 8
- Tutorial ChromeDriver Selenium: Δοκιμές Webdriver Selenium στο Chrome
- Υλοποίηση του πρώτου μας σεναρίου WebDriver - Selenium WebDriver Tutorial # 10
- 30+ καλύτερα σεμινάρια σεληνίου: Μάθετε το σελήνιο με πραγματικά παραδείγματα
- Συχνές ερωτήσεις για το σελήνιο
- Τρόπος χειρισμού ειδοποιήσεων / αναδυόμενων παραθύρων στο Selenium WebDriver - Selenium Tutorial # 16
- Σιωπηρή και ρητή αναμονή στο Selenium WebDriver (Τύποι σεληνίου περιμένει)