how handle alerts popups selenium webdriver selenium tutorial 16
Αποτελεσματικοί τρόποι χειρισμού ειδοποιήσεων / αναδυόμενων παραθύρων και αναδυόμενων παραθύρων που βασίζονται στο Web στο Selenium WebDriver:
εφαρμογές που σας επιτρέπουν να κάνετε λήψη βίντεο στο YouTube
Στο προηγούμενο σεμινάριο, εστιάσαμε τη συζήτησή μας διαφορετικοί τύποι αναμονής που παρέχονται από το WebDriver . Συζητήσαμε επίσης για διάφορους τύπους επιλογών πλοήγησης που διατίθενται στο WebDriver.
Προχωρώντας στο Σεμινάρια WebDriver Tutorials , θα συζητήσουμε για Διαφορετικοί τύποι ειδοποιήσεων διαθέσιμων κατά τη δοκιμή εφαρμογών ιστού και των στρατηγικών χειρισμού τους.
Υπάρχουν δύο τύποι ειδοποιήσεων στους οποίους θα επικεντρωθούμε κυρίως :
- Αναδυόμενα παράθυρα ειδοποίησης που βασίζονται σε Windows
- Αναδυόμενα παράθυρα συναγερμού μέσω διαδικτύου
Όπως γνωρίζουμε ότι ο χειρισμός αναδυόμενων παραθύρων που βασίζεται σε παράθυρα είναι πέρα από τις δυνατότητες του WebDriver, έτσι θα ασκήσουμε κάποια βοηθητικά προγράμματα τρίτων για να χειριστούμε τα αναδυόμενα παράθυρα.
Ο χειρισμός των αναδυόμενων παραθύρων είναι ένα από τα πιο δύσκολα κομμάτια εργασίας για αυτοματοποίηση κατά τη δοκιμή εφαρμογών ιστού. Λόγω της ποικιλομορφίας των τύπων αναδυόμενων παραθύρων, η κατάσταση περιπλέκει ακόμη περισσότερο.
Τι είναι το πλαίσιο ειδοποίησης / αναδυόμενο πλαίσιο / πλαίσιο επιβεβαίωσης / γραμμή προτροπής / ελέγχου ταυτότητας;
Δεν είναι τίποτα άλλο από ένα μικρό κουτί που εμφανίζεται στην οθόνη για να σας δώσει κάποιες πληροφορίες ή να σας προειδοποιήσει για μια πιθανώς βλαβερή λειτουργία ή μπορεί ακόμη και να σας ζητήσει τα δικαιώματα για τη λειτουργία.
Παράδειγμα: Ας εξετάσουμε ένα πραγματικό παράδειγμα για καλύτερη κατανόηση. Ας υποθέσουμε ότι ανεβάσαμε μια φωτογραφία σε οποιονδήποτε από αυτούς τους δημοφιλείς ιστότοπους κοινωνικής δικτύωσης. Αργότερα, θέλω να διαγράψω τη μεταφορτωμένη φωτογραφία. Για να διαγράψω, έκανα κλικ στο κουμπί διαγραφής. Μόλις κάνω κλικ στο κουμπί διαγραφής, το σύστημα με προειδοποιεί για την ενέργεια μου, προτρέποντας - Θέλετε πραγματικά να διαγράψετε το αρχείο; Τώρα λοιπόν έχουμε την επιλογή είτε να αποδεχτούμε αυτήν την ειδοποίηση είτε να την απορρίψουμε.
Πριν από τη συνεδρία, ας δούμε πώς απορρίπτουμε ή αποδεχόμαστε τις ειδοποιήσεις ανάλογα με τους τύπους τους. Ξεκινώντας με αναδυόμενα παράθυρα που βασίζονται στον Ιστό
Τι θα μάθετε:
- Αναδυόμενα παράθυρα που βασίζονται στον Ιστό
- Αναδυόμενα παράθυρα βάσει παραθύρου
- συμπέρασμα
- Συνιστώμενη ανάγνωση
Αναδυόμενα παράθυρα που βασίζονται στον Ιστό
Ας δούμε πώς τα χειριζόμαστε χρησιμοποιώντας το WebDriver.
Χειρισμός αναδυόμενου κουτιού μέσω διαδικτύου
Το WebDriver προσφέρει στους χρήστες έναν πολύ αποτελεσματικό τρόπο χειρισμού αυτών των αναδυόμενων παραθύρων χρησιμοποιώντας τη διεπαφή ειδοποίησης.
Υπάρχουν οι τέσσερις μέθοδοι που θα χρησιμοποιούσαμε μαζί με τη διεπαφή ειδοποιήσεων.
1) άκυρη απόρριψη () - Η μέθοδος απόρριψης () κάνει κλικ στο κουμπί 'Ακύρωση' μόλις εμφανιστεί το αναδυόμενο παράθυρο.
δύο) άκυρη αποδοχή () - Η μέθοδος αποδοχής () κάνει κλικ στο κουμπί 'Ok' μόλις εμφανιστεί το αναδυόμενο παράθυρο.
3) Συμβολοσειρά getText () - Η μέθοδος getText () επιστρέφει το κείμενο που εμφανίζεται στο πλαίσιο ειδοποίησης.
4) void sendKeys (συμβολοσειρά stringToSend) - Η μέθοδος sendKeys () εισάγει το καθορισμένο μοτίβο συμβολοσειράς στο πλαίσιο ειδοποίησης.
Ας προχωρήσουμε και να δούμε την πραγματική εφαρμογή.
Επεξήγηση της εφαρμογής υπό δοκιμή
Έχουμε σχεδιάσει μια ιστοσελίδα με τρόπο που να περιλαμβάνει μερικούς βασικούς τύπους στοιχείων ιστού. Αυτή είναι η ίδια εφαρμογή που παρουσιάσαμε κατά τη συζήτηση της κατηγορίας Select νωρίτερα σε αυτήν τη σειρά.
- Υπερσύνδεσμος : Έχουν παρασχεθεί οι δύο υπερσύνδεσμοι, δηλαδή 'Google' και 'abodeQA', οι οποίοι κατευθύνουν εκ νέου τον χρήστη στη διεύθυνση 'http://www.google.com/' και 'http://www.abodeqa.com/' αντίστοιχα στο κάντε κλικ στο συμβάν.
- Αναπτυσσόμενο μενού : Οι τρεις υπερσύνδεσμοι έχουν δημιουργηθεί για την επιλογή χρωμάτων, φρούτων και ζώων με τιμή που έχει οριστεί ως προεπιλογή.
- Κουμπί : Δημιουργήθηκε ένα κουμπί 'δοκιμάστε το' για να εμφανιστεί το αναδυόμενο πλαίσιο με κουμπιά ΟΚ και Ακύρωση κατά την εκδήλωση κλικ.
(Κάντε κλικ στην εικόνα για προβολή μεγεθυμένη)
Στη συνέχεια είναι ο κώδικας HTML που χρησιμοποιείται για τη δημιουργία της παραπάνω ιστοσελίδας:
Δοκιμή κατηγορίαςΚόκκινο πράσινο κίτρινο γκρι | Apple Orange Mango Lime | Επιλέξτε Elephant Mouse Dog |
Κάντε κλικ στο κουμπί για να εμφανιστεί ένα πλαίσιο επιβεβαίωσης. Δοκιμάστε το να λειτουργήσει myFunction () {επιβεβαίωση ('Πατήστε ένα κουμπί!'); } |
Σενάριο που θα αυτοματοποιηθεί
- Εκκινήστε το πρόγραμμα περιήγησης ιστού και ανοίξτε την ιστοσελίδα
- Κάντε κλικ στο κουμπί 'Δοκιμάστε το'
- Αποδοχή της ειδοποίησης
- Κάντε ξανά κλικ στο κουμπί 'Δοκιμάστε το'
- Απόρριψη της ειδοποίησης
Κωδικός WebDriver χρησιμοποιώντας Select Class
Σημειώστε ότι για τη δημιουργία σεναρίων, θα χρησιμοποιούσαμε το έργο 'Learning_Selenium' που δημιουργήθηκε στο προηγούμενο σεμινάριο.
Βήμα 1 : Δημιουργήστε μια νέα τάξη java που ονομάζεται 'DemoWebAlert' στο έργο 'Learning_Selenium'.
Βήμα 2 : Αντιγράψτε και επικολλήστε τον παρακάτω κώδικα στην κατηγορία 'DemoWebAlert.java'.
Παρακάτω είναι το σενάριο δοκιμής που είναι ισοδύναμο με το παραπάνω σενάριο.
import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; /** * class description */ public class DemoWebAlert { WebDriver driver; /** * Constructor */ public DemoWebAlert() { } /** * Set up browser settings and open the application */ @Before public void setUp() { driver=new FirefoxDriver(); // Opened the application driver.get('file:///F:/Work/Selenium/Testing-Presentation/DemoWebPopup.htm'); driver.manage().window().maximize(); } /** * Test to check Select functionality * @throws InterruptedException */ @Test public void testWebAlert() throws InterruptedException { // clicking on try it button driver.findElement(By.xpath('//button(contains(text(),'Try it'))')).click(); Thread.sleep(5000); // accepting javascript alert Alert alert = driver.switchTo().alert(); alert.accept(); // clicking on try it button driver.findElement(By.xpath('//button(contains(text(),'Try it'))')).click(); Thread.sleep(5000); // accepting javascript alert driver.switchTo().alert().dismiss(); // clicking on try it button driver.findElement(By.xpath('//button(contains(text(),'Try it'))')).click(); Thread.sleep(5000); // accepting javascript alert System.out.println(driver.switchTo().alert().getText()); driver.switchTo().alert().accept(); } /** * Tear down the setup after test completes */ @After public void tearDown() { driver.quit(); } }
Διαδρομή κώδικα
Εισαγωγικές δηλώσεις
Εισαγωγή org.openqa.selenium.Alert - Εισαγάγετε αυτό το πακέτο πριν από τη δημιουργία σεναρίου Το πακέτο αναφέρεται στην κλάση ειδοποιήσεων που απαιτείται για τη διαχείριση των ειδοποιήσεων μέσω Web στο WebDriver.
Δημιουργία αντικειμένου για κλάση ειδοποιήσεων
Ειδοποίηση ειδοποίησης = driver.switchTo (). Alert ();
Δημιουργούμε μια μεταβλητή αναφοράς για την κατηγορία Alert και την αναφέρουμε στην ειδοποίηση.
ορίσματα γραμμής εντολών σε παραδείγματα σεναρίων κελύφους
Μετάβαση σε Ειδοποίηση
Driver.switchTo (). Ειδοποίηση ();
Η παραπάνω εντολή χρησιμοποιείται για την εναλλαγή του ελέγχου στο αναδυόμενο παράθυρο που δημιουργήθηκε πρόσφατα.
Αποδοχή της ειδοποίησης
alert.accept ();
Η παραπάνω εντολή αποδέχεται την ειδοποίηση κάνοντας κλικ στο κουμπί Ok.
Απόρριψη της ειδοποίησης
alert.dismiss ();
Η παραπάνω εντολή κλείνει την ειδοποίηση κάνοντας κλικ στο κουμπί Ακύρωση και ως εκ τούτου η λειτουργία δεν πρέπει να προχωρήσει.
Αναδυόμενα παράθυρα βάσει παραθύρου
Μερικές φορές κατά την αυτοματοποίηση, λαμβάνουμε μερικά σενάρια, όπου πρέπει να χειριστούμε αναδυόμενα παράθυρα που δημιουργούνται από παράθυρα όπως ένα αναδυόμενο παράθυρο εκτύπωσης ή ένα παράθυρο περιήγησης κατά τη μεταφόρτωση ενός αρχείου.
Διαβάστε επίσης = >> Πώς να χειριστείτε τη μεταφόρτωση αρχείων στο Selenium
Ο χειρισμός αυτών των αναδυόμενων παραθύρων ήταν πάντα λίγο δύσκολος, καθώς γνωρίζουμε ότι το Selenium είναι ένα εργαλείο δοκιμών αυτοματισμού που υποστηρίζει μόνο δοκιμές εφαρμογών ιστού, που σημαίνει ότι δεν υποστηρίζει εφαρμογές που βασίζονται σε παράθυρα και η ειδοποίηση παραθύρου είναι μία από αυτές. Ωστόσο, μόνο το Σελήνιο δεν μπορεί να βοηθήσει την κατάσταση, αλλά μαζί με κάποια παρέμβαση τρίτων, αυτό το πρόβλημα μπορεί να ξεπεραστεί.
Υπάρχουν πολλά εργαλεία τρίτου μέρους διαθέσιμα για το χειρισμό αναδυόμενων παραθύρων με το σελήνιο.
ποια εφαρμογή σάς επιτρέπει να κάνετε λήψη βίντεο στο YouTube
Ας χειριστούμε λοιπόν ένα αναδυόμενο παράθυρο με βάση την κατηγορία Robot.
Η κλάση ρομπότ είναι ένα βοηθητικό πρόγραμμα που βασίζεται σε Java και μιμείται τις ενέργειες πληκτρολογίου και ποντικιού.
Πριν προχωρήσουμε, ας ρίξουμε μια στιγμή για να ρίξουμε μια ματιά στην υπό δοκιμή εφαρμογή (AUT).
Επεξήγηση της εφαρμογής υπό δοκιμή
Ως δοκιμαστική εφαρμογή, χρησιμοποιούμε το 'gmail.com'. Πιστεύω ότι η εφαρμογή δεν απαιτεί άλλες εισαγωγές.
Σενάριο που θα αυτοματοποιηθεί
- Εκκινήστε το πρόγραμμα περιήγησης ιστού και ανοίξτε την εφαρμογή - 'gmail.com'
- Εισαγάγετε έγκυρο όνομα χρήστη και κωδικό πρόσβασης
- Κάντε κλικ στο κουμπί σύνδεσης
- Κάντε κλικ στο κουμπί σύνταξης
- Κάντε κλικ στο εικονίδιο επισύναψης
- Επιλέξτε τα αρχεία που θα μεταφορτωθούν με το αναδυόμενο παράθυρο.
Κωδικός WebDriver χρησιμοποιώντας Robot Class
Σημειώστε ότι για τη δημιουργία σεναρίων, θα χρησιμοποιούσαμε το έργο 'Learning_Selenium' που δημιουργήθηκε στο προηγούμενο σεμινάριο.
Βήμα 1 : Δημιουργήστε μια νέα τάξη java που ονομάζεται 'DemoWindowAlert' στο έργο 'Learning_Selenium'.
Βήμα 2 : Αντιγράψτε και επικολλήστε τον παρακάτω κώδικα στην τάξη 'DemoWindowAlert.java'.
Παρακάτω είναι το σενάριο δοκιμής που είναι ισοδύναμο με το παραπάνω σενάριο.
import java.awt.Robot;
εισαγωγή java.awt.event.KeyEvent; εισαγωγή org.junit. Μετά; εισαγωγή org.junit. Πριν; εισαγωγή org.junit.Test; εισαγωγή org.openqa.selenium.By; εισαγωγή org.openqa.selenium.WebDriver; εισαγωγή org.openqa.selenium.firefox.FirefoxDriver; δημόσια τάξη DemoWindowAlert {Πρόγραμμα οδήγησης WebDriver; @ Πριν από το δημόσιο void setUp () {driver = new FirefoxDriver (); driver.get ('https://gmail.com'); driver.manage (). window (). μεγιστοποίηση (); } @Test public void testWindowAlert () ρίχνει την εξαίρεση {// εισαγάγετε μια έγκυρη διεύθυνση email driver.findElement (By.id ('Email')). SendKeys ('TestSelenium1607@gmail.com '); // εισαγάγετε έναν έγκυρο κωδικό πρόσβασης driver.findElement (By.id ('Passwd')). sendKeys ('TestSelenium'); // κάντε κλικ στο κουμπί εισόδου driver.findElement (By.id ('signIn')). κάντε κλικ στο (); Thread.sleep (30000); // κάντε κλικ στο κουμπί σύνταξης driver.findElement (By.xpath ('// div (@ class =' z0 ') // div (περιέχει (κείμενο (), 'ΣΥΝΘΕΣΗ'))')). κάντε κλικ (); // κάντε κλικ στο εικονίδιο επισύναψης αρχείων driver.findElement (By.xpath ('// div (περιέχει (@ εντολή,' Files ')) // div (περιέχει (@ class,' aaA '))')). κάντε κλικ ( ); // δημιουργία στιγμιότυπου κλάσης ρομπότ (βοηθητικό πρόγραμμα που βασίζεται σε java) Robot rb = νέο ρομπότ (); // Πιέζοντας πλήκτρα με τη βοήθεια των πλήκτρων KeyPress και KeyRelease συμβάντων rb.keyRelease (KeyEvent.VK_D); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_SHIFT); rb.keyPress (KeyEvent.VK_SEMICOLON); rb.keyRelease (KeyEvent.VK_SEMICOLON); rb.keyRelease (KeyEvent.VK_SHIFT); rb.keyPress (KeyEvent.VK_BACK_SLASH); rb.keyRelease (KeyEvent.VK_BACK_SLASH); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_P); rb.keyRelease (KeyEvent.VK_P); rb.keyPress (KeyEvent.VK_I); rb.keyRelease (KeyEvent.VK_I); rb.keyPress (KeyEvent.VK_C); rb.keyRelease (KeyEvent.VK_C); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_ENTER); rb.keyRelease (KeyEvent.VK_ENTER); Thread.sleep (2000); } @After public void tearDown () {driver.quit (); }} Διαδρομή κώδικα
Εισαγωγικές δηλώσεις
εισαγωγή java.awt.Robot - Εισαγάγετε αυτό το πακέτο πριν από τη δημιουργία σεναρίου Το πακέτο αναφέρεται στην κλάση Robot στην Java που απαιτείται προσομοίωση συμβάντων πληκτρολογίου και ποντικιού.
εισαγωγή java.awt.event.KeyEvent - Το πακέτο επιτρέπει στο χρήστη να χρησιμοποιεί τα πλήκτρα KeyPress και KeyRelease συμβάντα ενός πληκτρολογίου.
Δημιουργία αντικειμένων για κλάση ρομπότ
Robot rb = νέο ρομπότ ();
Δημιουργούμε μια μεταβλητή αναφοράς για την κλάση Robot και την δημιουργούμε.
Εκδηλώσεις KeyPress και KeyRelease
rb.keyPress (KeyEvent.VK_D);
rb.keyRelease (KeyEvent.VK_D);
Οι μέθοδοι KeyPress και KeyRelease προσομοιώνουν το χρήστη πατώντας και απελευθερώνοντας ένα συγκεκριμένο πλήκτρο στο πληκτρολόγιο αντίστοιχα.
συμπέρασμα
Σε αυτό το σεμινάριο, προσπαθήσαμε να σας εξοικειώσουμε με την κλάση ειδοποίησης του WebDriver που χρησιμοποιείται για τη διαχείριση αναδυόμενων παραθύρων. Σας ενημερώσαμε επίσης για την κλάση Ρομπότ που μπορεί να χρησιμοποιηθεί για τη συμπλήρωση της τιμής στην ειδοποίηση βάσει παραθύρου με τη βοήθεια των συμβάντων KeyPress και keyRelease.
Περίληψη άρθρου:
- Οι ειδοποιήσεις είναι ένα μικρό κουτί που εμφανίζεται στην οθόνη για να σας δώσει κάποιες πληροφορίες ή να σας προειδοποιήσει για μια πιθανώς επιβλαβή λειτουργία ή μπορεί ακόμη και να σας ζητήσει τα δικαιώματα για τη λειτουργία.
- Υπάρχουν δημοφιλείς δύο τύποι ειδοποιήσεων -
- Αναδυόμενα παράθυρα ειδοποίησης που βασίζονται σε Windows
- Αναδυόμενα παράθυρα ειδοποιήσεων μέσω διαδικτύου
- Πριν από την πραγματική δέσμη ενεργειών, πρέπει να εισαγάγουμε ένα πακέτο για να μπορέσουμε να δημιουργήσουμε ένα σενάριο WebDriver για το χειρισμό ενός αναπτυσσόμενου και καθιστώντας την κλάση Select προσβάσιμη.
- Το WebDriver προσφέρει στους χρήστες έναν πολύ αποτελεσματικό τρόπο χειρισμού αυτών των αναδυόμενων παραθύρων χρησιμοποιώντας τη διεπαφή ειδοποίησης.
- άκυρη απόρριψη () - Ο απολύω() η μέθοδος κάνει κλικ στο κουμπί 'Ακύρωση' μόλις εμφανιστεί το αναδυόμενο παράθυρο.
- άκυρη αποδοχή () - Ο αποδέχομαι() η μέθοδος κάνει κλικ στο κουμπί 'Ok' μόλις εμφανιστεί το αναδυόμενο παράθυρο.
- Σειρά getText () - Ο getText () Η μέθοδος επιστρέφει το κείμενο που εμφανίζεται στο πλαίσιο ειδοποίησης.
- void sendKeys (συμβολοσειρά stringToSend) - Ο αποστολή κλειδιών () Η μέθοδος εισάγει το καθορισμένο μοτίβο συμβολοσειράς στο πλαίσιο ειδοποίησης.
- Διαχείριση αναδυόμενων παραθύρων βάσει παραθύρου ήταν πάντα λίγο δύσκολο καθώς γνωρίζουμε ότι το Selenium είναι ένα εργαλείο δοκιμών αυτοματισμού που υποστηρίζει μόνο δοκιμές εφαρμογών ιστού, που σημαίνει ότι δεν υποστηρίζει εφαρμογές που βασίζονται σε παράθυρα και η ειδοποίηση παραθύρου είναι μία από αυτές.
- Μάθημα ρομπότ είναι ένα βοηθητικό πρόγραμμα που βασίζεται σε Java, το οποίο μιμείται τις ενέργειες του πληκτρολογίου και του ποντικιού και μπορεί να χρησιμοποιηθεί αποτελεσματικά για το χειρισμό αναδυόμενων παραθύρων με τη βοήθεια συμβάντων πληκτρολογίου.
- Οι μέθοδοι KeyPress και KeyRelease προσομοιώνουν το χρήστη πατώντας και απελευθερώνοντας ένα συγκεκριμένο πλήκτρο στο πληκτρολόγιο αντίστοιχα.
Επόμενο σεμινάριο # 17 : Στο επερχόμενο σεμινάριο, θα συζητούσαμε για τα διάφορα άλλα κοινώς χρησιμοποιούμενες εντολές WebDriver . Θα ρίξουμε φως σε θέματα όπως ο χειρισμός εξαιρέσεων και ο χειρισμός iframe. Θα συζητούσαμε επίσης για τις εντολές λήψης που παρέχονται στο WebDriver.
Θα εξηγήσουμε αυτά τα θέματα με γρήγορα παραδείγματα, προκειμένου να καταστούν κατανοητά για τους αναγνώστες να ασκήσουν αυτές τις έννοιες στο καθημερινό τους σενάριο.
Σημείωση για τους αναγνώστες : Μέχρι τότε, μείνετε συντονισμένοι και αυτοματοποιήστε τις ιστοσελίδες που διαθέτουν αναδυόμενα παράθυρα που βασίζονται στον Ιστό και παράθυρο χρησιμοποιώντας το βοηθητικό πρόγραμμα WebDriver - 'Alert class' και Java βοηθητικό πρόγραμμα - 'Robot Class'.
Μη διστάσετε να δημοσιεύσετε τα ερωτήματα / τα σχόλιά σας σχετικά με αυτό ή οποιοδήποτε άλλο προηγούμενο σεμινάριο στα παρακάτω σχόλια.
Συνιστώμενη ανάγνωση
- Cucumber Selenium Tutorial: Αγγούρι Java Selenium WebDriver Integration
- Εισαγωγή στο Selenium WebDriver - Selenium Tutorial # 8
- Υλοποίηση του πρώτου μας σεναρίου WebDriver - Selenium WebDriver Tutorial # 10
- WebDriver Ολόκληρη εγκατάσταση και εγκατάσταση με Eclipse - Selenium Tutorial # 9
- Ελέγξτε την ορατότητα των στοιχείων Web χρησιμοποιώντας διάφορους τύπους εντολών WebDriver - Selenium Tutorial # 14
- Tutorial GeckoDriver Selenium: Πώς να χρησιμοποιήσετε το GeckoDriver σε έργα Selenium
- Ενσωμάτωση της Jenkins με το Selenium WebDriver: Εκμάθηση βήμα προς βήμα
- Αποτελεσματικά σενάρια Selenium και Αντιμετώπιση προβλημάτων - Σελήνιο Σεμινάριο # 27