HTMLUnitDriver μέσα Selenium: Εκμάθηση προγράμματος περιήγησης χωρίς κεφαλή

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

Το HtmlUnitDriver είναι η ταχύτερη headless υλοποίηση του Selenium Το WebDriver, ενώ το PhantomJS, κάποτε ένα δημοφιλές πρόγραμμα περιήγησης χωρίς κεφαλή που βασίζεται στο GhostDriver, έχει καταργηθεί από το 2018 και τώρα έχει αντικατασταθεί από το headless Chrome, headless Firefoxκαι Playwright για σύγχρονες ροές εργασίας αυτοματισμού.

  • 🤖 Ακέφαλη ιδέα: τρέξιμο Selenium δοκιμές χωρίς ορατό γραφικό περιβάλλον χρήστη για εξοικονόμηση CPU, μνήμης και χρόνου εκτέλεσης σε όλους τους αγωγούς CI.
  • ⚙️ Ισχύς HtmlUnitDriver: Καθαρός Java μηχανή, χωρίς εξωτερικό δυαδικό αρχείο, ιδανικό για γρήγορους ελέγχους σε επίπεδο HTTP και γρήγορες αλληλεπιδράσεις με φόρμες.
  • 🚀 Κατάργηση του PhantomJS: Η ανάπτυξη του PhantomJS σταμάτησε το 2018. Οι ομάδες θα πρέπει να μεταβούν σε headless Chrome, headless Firefox, ή Θεατρικός Συγγραφέας.
  • Σύγχρονες εναλλακτικές λύσεις: Χρώμιο χωρίς κεφαλή και Firefox προσφορά ακριβούς JavaΑπόδοση σεναρίων, πρωτόκολλο DevTools και καλύτερος εντοπισμός σφαλμάτων.
  • 🧪 Περιπτώσεις Χρήσης Καλύτερα: Έλεγχοι καπνού, σουίτες παλινδρόμησης, δοκιμές φορτίου και εργασίες συνεχούς ενσωμάτωσης σε headless runners Linux.

HTMLUnitDriver μέσα Selenium

Ένα πρόγραμμα περιήγησης χωρίς κεφαλή είναι ένα πρόγραμμα περιήγησης ιστού χωρίς γραφική διεπαφή χρήστη. Μπορεί να εκτελείται στο παρασκήνιο χωρίς οπτική απεικόνιση.tracσεις. Προσφέρει έναν αποτελεσματικό και αποδοτικό τρόπο για τον έλεγχο εφαρμογών ιστού, εξοικονομώντας παράλληλα χρόνο και πόρους. Σε αυτό το άρθρο, εξερευνούμε τι είναι ένα πρόγραμμα περιήγησης χωρίς κεφαλή, πότε να χρησιμοποιούμε τον έλεγχο χωρίς κεφαλή και πώς να τον εκτελούμε χρησιμοποιώντας Selenium HtmlUnitDriver και PhantomJS.

Τι είναι ένα πρόγραμμα περιήγησης χωρίς κεφαλή;

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

Μερικά παραδείγματα προγραμμάτων οδήγησης προγράμματος περιήγησης χωρίς κεφαλή περιλαμβάνουν:

  • HtmlUnit
  • Φάντασμα
  • PhantomJS (καταργημένο)
  • ZombieJS
  • Watir- πρόγραμμα οδήγησης ιστού
  • Ακέφαλο Chrome
  • Ακέφαλος Firefox

Πότε να χρησιμοποιήσετε το Headless Browser Testing;

Στη σημερινή ψηφιακή εποχή, οι διαδικτυακές εφαρμογές κατασκευάζονται ώστε να είναι συμβατές με ένα ευρύ φάσμα συσκευών και πλατφορμών. Αυτό δημιουργεί μια πρόκληση για τους προγραμματιστές, οι οποίοι πρέπει να διασφαλίσουν ότι οι εφαρμογές τους λειτουργούν άψογα σε διαφορετικά περιβάλλοντα. Η δοκιμή χωρίς κεφαλή σε πρόγραμμα περιήγησης είναι μια ιδανική λύση, επειδή επιτρέπει στους προγραμματιστές να επικυρώνουν τις διαδικτυακές εφαρμογές τους χωρίς γραφικό περιβάλλον χρήστη. Χρησιμοποιώντας δοκιμές χωρίς κεφαλή σε πρόγραμμα περιήγησης, οι προγραμματιστές μπορούν να καλύψουν γρήγορα σύνθετες διαδικτυακές εφαρμογές με πολλά στοιχεία και εξαρτήσεις, ανοίγοντας το δρόμο για ταχύτερη ανάπτυξη, λιγότερα σφάλματα και πιο ευχαριστημένους χρήστες.

Δοκιμή προγράμματος περιήγησης χωρίς κεφαλή με Selenium

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

Δημοφιλή παραδείγματα προγραμμάτων περιήγησης χωρίς κεφαλή

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

PhantomJS

Ειδοποίηση κατάργησης: Η ενεργή ανάπτυξη του PhantomJS σταμάτησε το 2018 και το έργο δεν συντηρείται πλέον. Τα νέα έργα θα πρέπει να προτιμούν το headless Chrome, headless FirefoxΤο HIFU, ή Υψηλής Έντασης Εστιασμένος Υπέρηχος, στοχεύει επίσης στο πρόσωπο και τον λαιμό. Προσφέρει θεραπεία σε γρήγορες εκπομπές, γεγονός που κάνει τις συνεδρίες θεραπείας συντομότερες. Θεατρικός συγγραφέας για σύγχρονο αυτοματισμό χωρίς κεφαλές. Το παράδειγμα PhantomJS παρακάτω περιλαμβάνεται μόνο για αναφορά.

Το PhantomJS είναι ένα πρόγραμμα περιήγησης χωρίς κεφαλή που χρησιμοποιεί το WebKit ως μηχανή απόδοσης και υποστηρίζει πρότυπα ιστού όπως HTML5, CSS3 και JavaΣενάριο. Μπορεί να χρησιμοποιηθεί για εργασίες καταγραφής οθόνης και αυτοματοποίησης σελίδων. Είναι ανοιχτού κώδικα και ήταν συμβατό με πολλά λειτουργικά συστήματα.

Παράδειγμα Selenium με Headless PhantomJS in Python:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
# Set up PhantomJS options
phantomjs_options = webdriver.DesiredCapabilities.PHANTOMJS.copy()
phantomjs_options['phantomjs.page.settings.userAgent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
# Set up the PhantomJS driver
driver = webdriver.PhantomJS('/path/to/phantomjs', desired_capabilities=phantomjs_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

Chrome

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

Παράδειγμα Headless Chrome με Selenium in Python:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Set up Chrome options
chrome_options = Options()
chrome_options.add_argument('--headless')  # Run Chrome in headless mode
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
# Set up the Chrome driver
driver = webdriver.Chrome('/path/to/chromedriver', options=chrome_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

Firefox

Firefox είναι ένα δημοφιλές πρόγραμμα περιήγησης ιστού που μπορεί επίσης να χρησιμοποιηθεί ως πρόγραμμα περιήγησης χωρίς κεφαλίδα για δοκιμές. Ένα πλεονέκτημα της χρήσης Firefox ως πρόγραμμα περιήγησης χωρίς κεφαλαία είναι το ελαφρύ του μέγεθος, το οποίο το καθιστά μια ευέλικτη επιλογή για δοκιμές σε διαφορετικά λειτουργικά συστήματα. Σε συνδυασμό με την εκτενή τεκμηρίωση και την υποστήριξη της κοινότητας, Firefox είναι μια εξαιρετική επιλογή για ομάδες που πειραματίζονται με αυτοματοποίηση προγραμμάτων περιήγησης χωρίς κεφαλές.

Παράδειγμα Ακέφαλου Firefox μαζί σου, Selenium in Python:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
# Set up Firefox options
firefox_options = Options()
firefox_options.add_argument('--headless')  # Run Firefox in headless mode
# Set up the Firefox driver
driver = webdriver.Firefox(options=firefox_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

Πλεονεκτήματα του Headless Browser Testing

  • Ταχύτερη εκτέλεση δοκιμής
  • Οικονομική δοκιμή
  • Καλύτερη κάλυψη δοκιμών
  • Ευελιξία στις δοκιμές εκτέλεσης
  • Ευκολότερη ενσωμάτωση με αγωγούς CI/CD

Μειονεκτήματα του Headless Browser Testing

  • Έλλειψη ορατού γραφικού περιβάλλοντος χρήστη (GUI) για χειροκίνητο έλεγχο
  • Η διόρθωση σφαλμάτων μπορεί να είναι πιο δύσκολη χωρίς οθόνη
  • Περιορισμένη κάλυψη συμπεριφοράς ειδικά για το πρόγραμμα περιήγησης

HtmlUnitDriver

Το HtmlUnitDriver είναι η πιο ελαφριά και γρήγορη υλοποίηση ενός headless browser για Selenium WebDriver. Βασίζεται στο HtmlUnit και είναι επίσης γνωστό ως Πρόγραμμα οδήγησης προγράμματος περιήγησης HeadlessΣυμπεριφέρεται όπως το Chrome, ο IE ή Firefox πρόγραμμα οδήγησης, αλλά δεν διαθέτει γραφικό περιβάλλον χρήστη (GUI), επομένως η εκτέλεση της δοκιμής δεν είναι ορατή στην οθόνη. Το HtmlUnitDriver εξακολουθεί να συντηρείται και διανέμεται μέσω του org.seleniumhq.selenium:htmlunit3-driver Τεχνούργημα Maven.

Χαρακτηριστικά του HtmlUnitDriver:

  • Υποστήριξη για τα πρωτόκολλα HTTPS και HTTP
  • Υποστήριξη για απαντήσεις HTML (κλικ σε συνδέσμους, υποβολή φορμών, περιήγηση στο μοντέλο DOM του εγγράφου HTML και πολλά άλλα)
  • Υποστήριξη για cookies
  • Υποστήριξη διακομιστή μεσολάβησης
  • Υποστήριξη για βασικό και NTLM έλεγχο ταυτότητας
  • Στερεά JavaΓραφή υποστήριξη
  • Υποστήριξη για μεθόδους υποβολής GET και POST
  • Δυνατότητα προσαρμογής των κεφαλίδων αιτημάτων που αποστέλλονται στον διακομιστή
  • Δυνατότητα ελέγχου εάν οι αποτυχημένες απαντήσεις από τον διακομιστή θα πρέπει να δημιουργούν εξαιρέσεις ή να επιστρέφονται ως σελίδες του κατάλληλου τύπου

Βήματα για τη χρήση του HtmlUnitDriver με Selenium

Βήμα 1) In Eclipse, αντιγράψτε τον ακόλουθο κώδικα. Προσθέστε το πρότυπο Selenium αρχεία βιβλιοθήκης στο έργο. Δεν απαιτούνται πρόσθετα αρχεία JAR.

package  htmldriver;
import org.openqa.selenium.By;		
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;	
import org.openqa.selenium.htmlunit.HtmlUnitDriver;		
public class htmlUnitYest {				
		public static void main(String[] args) {
                     // Creating a new instance of the HtmlUnit driver
                      
                     WebDriver driver = new HtmlUnitDriver();
                      
           		     // Navigate to Google		
                     driver.get("http://www.google.com");					
          
					 // Locate the searchbox using its name		
                     WebElement element = driver.findElement(By.name("q"));	
                     
                    // Enter a search query		
                    element.sendKeys("Guru99");	
                   
		            // Submit the query. WebDriver searches for the form using the text input element automatically		
                    // No need to locate/find the submit button		
                    element.submit();			
                    
            		// This code will print the page title		
                    System.out.println("Page title is: " + driver.getTitle());		
                    
                    driver.quit();			
         }		
}

Βήμα 2) Εκτελέστε τον κωδικό. Θα παρατηρήσετε ότι δεν εκκινείται κανένα πρόγραμμα περιήγησης και τα αποτελέσματα εμφανίζονται στην κονσόλα.

Βήματα για τη χρήση του HtmlUnitDriver με Selenium

Πλεονεκτήματα του HtmlUnitDriver

  • Δεδομένου ότι δεν χρησιμοποιεί κανένα γραφικό περιβάλλον χρήστη (GUI), οι δοκιμές εκτελούνται στο παρασκήνιο χωρίς οπτική διακοπή.
  • Σε σύγκριση με άλλες παρουσίες προγραμμάτων οδήγησης, η εκτέλεση είναι ταχύτερη
  • Μπορείτε επίσης να μιμηθείτε διαφορετικές εκδόσεις του προγράμματος περιήγησης κατά την εκτέλεση δοκιμών μέσω του HtmlUnitDriver
  • Είναι ανεξάρτητο από πλατφόρμα και εύκολο στην εκτέλεση πολλών δοκιμών ταυτόχρονα. Είναι ιδανικό για δοκιμή φορτίου.

Περιορισμοί:

  • Δεν μπορεί να μιμηθεί πλήρως JavaΣυμπεριφορά σεναρίου κάθε πραγματικής μηχανής περιήγησης

PhantomJS

Υπενθύμιση: Το PhantomJS έχει καταργηθεί και δεν συντηρείται πλέον. Για νέα εργασία χωρίς κεφαλαία, χρησιμοποιήστε Selenium με Chrome χωρίς κεφαλή ή Firefoxή μετακινηθείτε στο Playwright. Η παρακάτω ενότητα παραμένει μόνο για αναφορά σε παλαιότερες εκδόσεις.

Το PhantomJS είναι ένα πρόγραμμα περιήγησης χωρίς κεφαλή με ένα JavaScript API. Χρησιμοποιούνταν ιστορικά για δοκιμές ιστοσελίδων χωρίς κεφαλίδες, πρόσβαση και χειρισμό ιστοσελίδων και συνοδεύεται από το τυπικό DOM API.

Για να χρησιμοποιήσετε το PhantomJS με Selenium, χρειάζεστε το GhostDriver. GhostDriver είναι μια υλοποίηση του πρωτοκόλλου WebDriver Wire σε απλό JavaΣκριπτ για PhantomJS.

Οι μεταγενέστερες εκδόσεις του PhantomJS ενσωματωθεί GhostDriver, λοιπόν δεν χρειάζεται να το εγκαταστήσετε ξεχωριστά.

Δείτε πώς λειτουργεί το σύστημα:

PhantomJS

Βήματα για να τρέξετε Selenium με PhantomJS

Βήμα 1) Χρειάζεται Eclipse μαζί σου, Selenium εγκατασταθεί.

Βήμα 2) Κατεβάστε το PhantomJS εδώ.

Βήματα για εκτέλεση Selenium Με PhantomJS

Βήμα 3) Extracτον ληφθέντα φάκελο στο Program Files.

Βήματα για εκτέλεση Selenium Με PhantomJS

Βήμα 4) Κατεβάστε το πρόγραμμα οδήγησης PhantomJS από εδώΠροσθέστε το JAR στο έργο σας.

Βήματα για εκτέλεση Selenium Με PhantomJS

Βήμα 5) Επικολλήστε τον ακόλουθο κώδικα στο Eclipse.

package htmldriver;	
import java.io.File;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.phantomjs.PhantomJSDriver;	

public class phantom {				
		public static void main(String[] args) {
        	        File file = new File("C:/Program Files/phantomjs-2.0.0-windows/bin/phantomjs.exe");				
                    System.setProperty("phantomjs.binary.path", file.getAbsolutePath());		
                    WebDriver driver = new PhantomJSDriver();	
                    driver.get("http://www.google.com");         
                    WebElement element = driver.findElement(By.name("q"));	
                    element.sendKeys("Guru99");					
                    element.submit();         			
                    System.out.println("Page title is: " + driver.getTitle());		
                    driver.quit();			
           }		
}

Βήμα 6) Εκτελέστε τον κώδικα. Θα δείτε την έξοδο στην κονσόλα και δεν θα ξεκινήσει κανένα πρόγραμμα περιήγησης.

ΣΗΜΕΊΩΣΗ: Κατά την πρώτη εκτέλεση, ανάλογα με τις ρυθμίσεις σας, ενδέχεται να δείτε μια προειδοποίηση ασφαλείας από Windows για να επιτρέψετε την εκτέλεση του PhantomJS. Κάντε κλικ Να επιτρέπεται η πρόσβαση.

Βήματα για εκτέλεση Selenium Με PhantomJS

Πολλοί οργανισμοί έχουν ιστορικά χρησιμοποιήσει το PhantomJS για εργασίες όπως:

  • Δοκιμές χωρίς κεφαλή
  • Αποτύπωση οθόνης
  • Αυτοματοποίηση σελίδας
  • Παρακολούθηση δικτύου
  • Απόδοση στιγμιότυπων οθόνης του πίνακα ελέγχου για τους χρήστες τους
  • Εκτέλεση δοκιμών μονάδας στη γραμμή εντολών
  • Δημιουργία εγχειριδίων εργαζομένων από HTML σε PDF
  • Συνδυασμός με QUnit για τη σουίτα δοκιμών

Για νέα εργασία, αντικαταστήστε αυτές τις περιπτώσεις χρήσης του PhantomJS με headless Chrome, headless Firefoxή Playwright, τα οποία λαμβάνουν συνεχείς ενημερώσεις ασφαλείας και απόδοσης.

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

Ένα πρόγραμμα περιήγησης χωρίς κεφαλή είναι ένα πρόγραμμα περιήγησης ιστού που εκτελείται χωρίς γραφικό περιβάλλον χρήστη. Selenium, προγράμματα οδήγησης χωρίς κεφαλή όπως το HtmlUnitDriver, το headless Chrome και το headless Firefox εκτέλεση δοκιμών στο παρασκήνιο, κάτι που εξοικονομεί πόρους και επιταχύνει τις σουίτες αυτοματισμού.

Όχι. Η ανάπτυξη του PhantomJS ανεστάλη το 2018 και το έργο δεν συντηρείται πλέον. Selenium έχει επίσης αφαιρέσει το PhantomJSDriver από πρόσφατες κυκλοφορίες. Οι νέες δοκιμές θα πρέπει να χρησιμοποιούν Chrome χωρίς κεφαλή, χωρίς κεφαλή Firefoxή, αντίθετα, Θεατρικός Συγγραφέας.

Το HtmlUnitDriver είναι ένα καθαρό Java μηχανή, πολύ γρήγορη και δεν χρειάζεται δυαδικό πρόγραμμα περιήγησης, αλλά έχει περιορισμένο JavaΠιστότητα σεναρίου. Το Headless Chrome χρησιμοποιεί την πραγματική μηχανή Blink, επομένως αποδίδει μοντέρνα JavaΙστότοποι με μεγάλο όγκο σεναρίων με ακρίβεια, με κόστος μεγαλύτερη χρήση πόρων.

Χρήση Selenium με headless Chrome ή headless Firefox για δοκιμές ακριβείας σε προγράμματα περιήγησης ή υιοθετήστε το Playwright για παράλληλο αυτοματισμό μεταξύ προγραμμάτων περιήγησης. Αυτά τα εργαλεία λαμβάνουν ενεργές ενημερώσεις ασφαλείας και υποστηρίζουν σύγχρονες λειτουργίες όπως το πρωτόκολλο DevTools και την παρακολούθηση δικτύου.

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

Ναι. Οι σύγχρονοι βοηθοί τεχνητής νοημοσύνης μπορούν να δημιουργήσουν Selenium Σενάρια WebDriver σε Java, PythonΤο HIFU, ή Υψηλής Έντασης Εστιασμένος Υπέρηχος, στοχεύει επίσης στο πρόσωπο και τον λαιμό. Προσφέρει θεραπεία σε γρήγορες εκπομπές, γεγονός που κάνει τις συνεδρίες θεραπείας συντομότερες. JavaΣενάριο από απλά βήματα στα Αγγλικά, συμπεριλαμβανομένων επιλογών χωρίς κεφαλίδα για Chrome ή FirefoxΝα ελέγχετε πάντα τον δημιουργημένο κώδικα για σωστές αναμονές, επιλογείς και ασφάλεια πριν τον εκτελέσετε στο CI.

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