Δοκιμή πολλαπλών προγραμμάτων περιήγησης χρησιμοποιώντας Selenium Πρόγραμμα οδήγησης Web

⚡ Έξυπνη Σύνοψη

Δοκιμή πολλαπλών προγραμμάτων περιήγησης χρησιμοποιώντας Selenium Το WebDriver επαληθεύει ότι μια εφαρμογή ιστού συμπεριφέρεται με συνέπεια στο Chrome, Firefox, Safari και Edge. Αυτό το σεμινάριο δείχνει πώς να συνδυάσετε Selenium WebDriver με TestNG για την εκκίνηση παράλληλων συνεδριών, την επικύρωση της απόδοσης και την κλιμάκωση της κάλυψης σε σύγχρονα προγράμματα περιήγησης για υπολογιστές και κινητά.

  • 🌐 Γιατί έχει σημασία: Οι πραγματικοί χρήστες ανοίγουν την ίδια σελίδα σε διαφορετικά προγράμματα περιήγησης, επομένως οι διατάξεις, τα σενάρια και τα στυλ πρέπει να αντέχουν παντού για να προστατεύουν τις μετατροπές και την προσβασιμότητα.
  • 🧪 Selenium Ρύθμιση προγράμματος οδήγησης ιστού: Ρυθμίστε τις παραμέτρους των ChromeDriver, GeckoDriver, EdgeDriver και SafariDriver και, στη συνέχεια, επιλέξτε τη σωστή παρουσία μέσω μιας μόνο παραμετροποιημένης μεθόδου.
  • 📱 TestNG παράλληλες διαδρομές: Ένα αρχείο testing.xml με parallel=”tests” ενεργοποιεί το Chrome, Firefoxκαι οι σουίτες Edge ταυτόχρονα, μειώνοντας τους κύκλους ανατροφοδότησης για μεγάλα πακέτα παλινδρόμησης.
  • Συνηθισμένα ελαττώματα που εντοπίστηκαν: Κλιμάκωση γραμματοσειράς, αλλαγές διάταξης CSS, JavaΤα κενά πολυσυμπλήρωσης σεναρίων, η υποστήριξη HTML5, ο προσανατολισμός εικόνας και οι ασυμφωνίες μεταξύ λειτουργικού συστήματος και προγράμματος περιήγησης εμφανίζονται γρήγορα.
  • Εργαστήρια cloud και τεχνητή νοημοσύνη: Τα Sauce Labs, BrowserStack και LambdaTest επεκτείνουν την κάλυψη σε χιλιάδες ζεύγη λειτουργικού συστήματος-προγράμματος περιήγησης, ενώ η οπτική παλινδρόμηση και οι εντοπιστές αυτο-επιδιόρθωσης που βασίζονται στην τεχνητή νοημοσύνη αυξάνουν την αξιοπιστία.

Δοκιμές σε διάφορα προγράμματα περιήγησης σε Selenium Πρόγραμμα οδήγησης Web

Γιατί χρειαζόμαστε Cross Browser Testing;

Οι εφαρμογές που βασίζονται στο web διαφέρουν πολύ από τις εγγενείς εφαρμογές για υπολογιστές. Μια εφαρμογή web μπορεί να ανοιχτεί σε οποιοδήποτε πρόγραμμα περιήγησης από τον τελικό χρήστη. Για παράδειγμα, ορισμένοι προτιμούν να ανοίγουν https://twitter.com in Firefox, ενώ άλλοι χρησιμοποιούν Chrome, SafariΤο HIFU, ή Υψηλής Έντασης Εστιασμένος Υπέρηχος, στοχεύει επίσης στο πρόσωπο και τον λαιμό. Προσφέρει θεραπεία σε γρήγορες εκπομπές, γεγονός που κάνει τις συνεδρίες θεραπείας συντομότερες. Microsoft Edge.

Στο παρακάτω διάγραμμα μπορείτε να παρατηρήσετε ότι σε παλαιότερα προγράμματα περιήγησης, το πλαίσιο σύνδεσης του Twitter δεν αποδίδει σωστά τις στρογγυλεμένες γωνίες, ενώ το σύγχρονο Chrome αποδίδει τις γωνίες όπως έχουν σχεδιαστεί.

Δοκιμή διαδικτυακού περιηγητή

Επομένως, πρέπει να διασφαλίσουμε ότι η διαδικτυακή εφαρμογή θα λειτουργεί όπως αναμένεται σε όλα τα δημοφιλή προγράμματα περιήγησης, ώστε περισσότεροι άνθρωποι να μπορούν να έχουν πρόσβαση σε αυτήν και να τη χρησιμοποιούν.

Αυτός ο στόχος μπορεί να επιτευχθεί με το Cross Browser Δοκιμές του προϊόντος σε κάθε πρόγραμμα περιήγησης που εμπίπτει στο πεδίο εφαρμογής.

Λόγοι για προβλήματα μεταξύ των προγραμμάτων περιήγησης

  1. Αναντιστοιχία μεγέθους γραμματοσειράς σε διαφορετικά προγράμματα περιήγησης.
  2. JavaΟι υλοποιήσεις της μηχανής σεναρίων διαφέρουν στο Chrome (V8), Firefox (SpiderMonkey), Σαφάρι (JavaScriptCore) και Edge.
  3. Διαφορές επικύρωσης CSS και HTML, συμπεριλαμβανομένου του χειρισμού προθέματος προμηθευτή.
  4. Ασυνεπής ή μερική υποστήριξη λειτουργιών HTML5 και ECMAScript σε παλαιότερες εκδόσεις προγραμμάτων περιήγησης.
  5. Στοίχιση σελίδας, μέγεθος div και παραλλαγές απόδοσης flexbox ή grid.
  6. Προσανατολισμός εικόνας και διαφορές στο προφίλ χρωμάτων.
  7. Ασυμβατότητα προγράμματος περιήγησης με το υποκείμενο λειτουργικό σύστημα, συμπεριλαμβανομένων των ιδιαιτεροτήτων του WebView για κινητά Android και iOS.

Πώς να κάνετε δοκιμές μεταξύ προγραμμάτων περιήγησης

Αν χρησιμοποιούμε Selenium WebDriver, μπορούμε να αυτοματοποιήσουμε τις δοκιμαστικές περιπτώσεις σε σχέση με το Chrome, Firefox, Microsoft Edgeκαι τα προγράμματα περιήγησης Safari.

Για να εκτελέσουμε δοκιμαστικές περιπτώσεις με διαφορετικά προγράμματα περιήγησης στο ίδιο μηχάνημα ταυτόχρονα, μπορούμε να ενσωματώσουμε το TestNG πλαίσιο με Selenium WebDriver. Για ευρύτερη κάλυψη λειτουργικού συστήματος και έκδοσης, η ίδια σουίτα μπορεί να συνδεθεί σε cloud grids όπως Sauce Labs, BrowserStack ή LambdaTest μέσω ενός απομακρυσμένου τελικού σημείου WebDriver.

Το testing.xml σας θα έχει την εξής μορφή:

Δοκιμή διαδικτυακού περιηγητή

Αυτό το testing.xml θα αντιστοιχιστεί με το Δοκιμαστική θήκη που μοιάζει με αυτό:

Δοκιμή διαδικτυακού περιηγητή

Επειδή το testing.xml έχει πολλές ετικέτες Test ('ChromeTest', 'FirefoxTest', 'EdgeTest'), αυτή η δοκιμαστική περίπτωση θα εκτελεστεί μία φορά για κάθε πρόγραμμα περιήγησης.

Η πρώτη δοκιμή 'ChromeTest' θα περάσει την τιμή της παραμέτρου 'browser' ως 'chrome', επομένως θα εκτελεστεί το ChromeDriver. Αυτή η δοκιμαστική περίπτωση θα εκτελεστεί στο πρόγραμμα περιήγησης Chrome.

Η δεύτερη δοκιμήFirefoxΗ δοκιμή" θα περάσει την τιμή της παραμέτρου "πρόγραμμα περιήγησης" ως "Firefox', λοιπόν FirefoxΤο πρόγραμμα οδήγησης θα εκτελεστεί. Αυτή η δοκιμαστική περίπτωση θα εκτελεστεί στο Firefox πρόγραμμα περιήγησης. Η προσθήκη μιας δοκιμής Edge ή Safari ακολουθεί το ίδιο μοτίβο.

Guru99CrossBrowserScript.java

Πλήρης Code:

package parallelTest;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.safari.SafariDriver;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class CrossBrowserScript {

	WebDriver driver;

	/**
	 * This function will execute before each Test tag in testng.xml
	 * @param browser
	 * @throws Exception
	 */
	@BeforeTest
	@Parameters("browser")
	public void setup(String browser) throws Exception{
		//Check if parameter passed from TestNG is 'firefox'
		if(browser.equalsIgnoreCase("firefox")){
		//create firefox instance
			System.setProperty("webdriver.gecko.driver", ".\\geckodriver.exe");
			driver = new FirefoxDriver();
		}
		//Check if parameter passed as 'chrome'
		else if(browser.equalsIgnoreCase("chrome")){
			//set path to chromedriver.exe
			System.setProperty("webdriver.chrome.driver",".\\chromedriver.exe");
			//create chrome instance
			driver = new ChromeDriver();
		}
		//Check if parameter passed as 'Edge'
		else if(browser.equalsIgnoreCase("Edge")){
			//set path to msedgedriver.exe
			System.setProperty("webdriver.edge.driver",".\\msedgedriver.exe");
			//create Edge instance
			driver = new EdgeDriver();
		}
		//Check if parameter passed as 'Safari'
		else if(browser.equalsIgnoreCase("Safari")){
			//SafariDriver ships with macOS, no driver path needed
			driver = new SafariDriver();
		}
		else{
			//If no browser passed throw exception
			throw new Exception("Browser is not correct");
		}
		driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
	}

	@Test
	public void testParameterWithXML() throws InterruptedException{
		driver.get("https://demo.guru99.com/V4/");
		//Find user name
		WebElement userName = driver.findElement(By.name("uid"));
		//Fill user name
		userName.sendKeys("guru99");
		//Find password
		WebElement password = driver.findElement(By.name("password"));
		//Fill password
		password.sendKeys("guru99");
	}
}

δοκιμή.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="TestSuite" thread-count="3" parallel="tests" >

<test name="ChromeTest">

<parameter name="browser" value="Chrome" />

<classes>

<class name="parallelTest.CrossBrowserScript">

</class>

</classes>

</test>

<test name="FirefoxTest">

<parameter name="browser" value="Firefox" />

<classes>

<class name="parallelTest.CrossBrowserScript">

</class>

</classes>

</test>

<test name="EdgeTest">

<parameter name="browser" value="Edge" />

<classes>

<class name="parallelTest.CrossBrowserScript">

</class>

</classes>

</test>

</suite>

ΣΗΜΕΊΩΣΗ: Για να εκτελέσετε τη δοκιμή, κάντε δεξί κλικ στο δοκιμή.xml, επιλέξτε Εκτέλεση ως και κάντε κλικ στο TestNG Σουίτα.

 Δοκιμή διαδικτυακού περιηγητή

Κλιμάκωση με πλέγματα προγράμματος περιήγησης στο cloud

Τρέξιμο Selenium Το WebDriver καλύπτει τοπικά δύο ή τρία προγράμματα περιήγησης, αλλά οι πραγματικοί χρήστες έχουν πρόσβαση σε ιστότοπους από εκατοντάδες συνδυασμούς λειτουργικών συστημάτων και προγραμμάτων περιήγησης. Εργαστήρια cloud όπως Sauce Labs, Πρόγραμμα περιήγησηςκαι Δοκιμή Lambda εκθέστε ένα απομακρυσμένο τελικό σημείο WebDriver. Σημειώστε το ίδιο Selenium δοκιμές στο πλέγμα, περνούν τις επιθυμητές δυνατότητες για το πρόγραμμα περιήγησης, την έκδοση, το λειτουργικό σύστημα και την ανάλυση και η σουίτα κλιμακώνεται οριζόντια χωρίς να διαχειρίζεται τοπικούς οδηγούς.

Τα σύγχρονα πλέγματα εμφανίζουν επίσης λειτουργίες με τη βοήθεια της τεχνητής νοημοσύνης, όπως οπτική απόκλιση παλινδρόμησης, εντοπιστές στοιχείων αυτοεπιδιόρθωσης και βαθμολόγηση ασταθειών, τα οποία μειώνουν το κόστος συντήρησης σε σουίτες δοκιμών Cross Browser μακράς διαρκείας.

Σημείωση: Το συγκεκριμένο πρόγραμμα δημιουργήθηκε και δοκιμάστηκε σε Selenium 4, Χρώμιο, Firefoxκαι Microsoft EdgeΕάν τα προγράμματα εμφανίζουν σφάλμα, ενημερώστε τα δυαδικά αρχεία του προγράμματος οδήγησης ώστε να ταιριάζουν με την έκδοση του εγκατεστημένου προγράμματος περιήγησης ή χρησιμοποιήστε το Selenium Διαχειριστής που επιλύει αυτόματα τα προγράμματα οδήγησης.

Κατεβάστε το Selenium Αρχεία έργου για την επίδειξη σε αυτό το σεμινάριο

Συχνές Ερωτήσεις

Η δοκιμή σε διάφορα προγράμματα περιήγησης είναι μια τεχνική λειτουργικού και οπτικού ελέγχου που επαληθεύει ότι μια διαδικτυακή εφαρμογή λειτουργεί με τον ίδιο τρόπο στο Chrome, Firefox, Safari, και Microsoft Edge σε επιτραπέζιους υπολογιστές και κινητά, συμπεριλαμβανομένων διαφορετικών λειτουργικών συστημάτων και μεγεθών παραθύρων προβολής.

Selenium Το WebDriver παρέχει ένα μόνο API που οδηγεί το Chrome, Firefox, Edge και Safari μέσω του επίσημου πρωτοκόλλου W3C WebDriver. Ο ίδιος κώδικας δοκιμής εκτελείται σε οποιοδήποτε πρόγραμμα περιήγησης, γεγονός που καθιστά Selenium Το WebDriver είναι το de facto πρότυπο για αυτοματοποίηση προγραμμάτων περιήγησης και δοκιμές σε διαφορετικά προγράμματα περιήγησης.

TestNG χρησιμοποιεί το αρχείο testing.xml με parallel=”tests” και thread-count για να εκκινήσει κάθε ετικέτα Test στο δικό της νήμα. Σε συνδυασμό με μια παραμετροποιημένη ρύθμιση @BeforeTest, το ίδιο Selenium Η σουίτα WebDriver εκτελείται σε Chrome, Firefoxκαι Edge ταυτόχρονα, μειώνοντας τον συνολικό χρόνο εκτέλεσης.

Τα Sauce Labs, BrowserStack και LambdaTest παρέχουν φιλοξενούμενους Selenium Πλέγματα που εκθέτουν χιλιάδες συνδυασμούς λειτουργικών συστημάτων και προγραμμάτων περιήγησης, συμπεριλαμβανομένων των iOS Safari και Android Chrome. Στρέψτε ένα RemoteWebDriver στο τελικό σημείο του πλέγματος και μεταβιβάστε τις επιθυμητές δυνατότητες για να εκτελέσετε τον ίδιο κώδικα σε κλίμακα.

Οι μηχανές οπτικής παλινδρόμησης που υποστηρίζονται από τεχνητή νοημοσύνη, όπως αυτές που είναι ενσωματωμένες στα Applitools, Percy και στις οπτικές ενότητες των BrowserStack και LambdaTest, συγκρίνουν τα στιγμιότυπα οθόνης σημασιολογικά αντί για pixel προς pixel. Αγνοούν τις αναμενόμενες διαφορές στην εξομάλυνση ή την απόδοση γραμματοσειρών μεταξύ του Chrome, Firefox, Safari και Edge, ενώ παράλληλα εντοπίζει γνήσιες παλινδρομήσεις διάταξης, γεγονός που μειώνει δραστικά τα ψευδώς θετικά αποτελέσματα στις διοχετεύσεις δοκιμών σε διάφορα προγράμματα περιήγησης.

Ναι. Σύγχρονα frameworks όπως το Healenium, Testim, Mabl, και τα χαρακτηριστικά Τεχνητής Νοημοσύνης στο Selenium Το IDE αναλύει το DOM και προτείνει σταθερούς επιλογείς XPath ή CSS. Όταν ένας εντοπιστής παρουσιάζει σφάλμα λόγω μιας αλλαγής στο UI, οι επιλογείς που δημιουργούνται από την τεχνητή νοημοσύνη αυτοεπιδιορθώνονται βαθμολογώντας κοντινά στοιχεία και επιλέγοντας την πλησιέστερη αντιστοιχία, γεγονός που διατηρεί τις σουίτες δοκιμών Cross Browser πράσινες με λιγότερη χειροκίνητη συντήρηση.

Συνηθισμένα ελαττώματα περιλαμβάνουν αναντιστοιχίες απόδοσης γραμματοσειρών και CSS, JavaΑσυνέπειες στη μηχανή script, προβληματική υποστήριξη λειτουργιών HTML5 ή ES, προβλήματα προσανατολισμού εικόνας, προβλήματα ευθυγράμμισης σελίδας, ελλείποντα προθέματα προμηθευτών και αποτυχίες που αφορούν συγκεκριμένα λειτουργικά συστήματα στο iOS Safari ή Android Chrome.

Συνοψίστε αυτήν την ανάρτηση με: