Hur man hanterar proxyautentisering i Selenium Webdriver

⚡ Smart sammanfattning

Proxy-autentisering i Selenium WebDriver hanterar popup-fönstret för autentiseringsuppgifter som visas när en webbläsare ansluter via en säker proxyserver. Eftersom Selenium inte kan hantera inbyggda dialogrutor direkt, två metoder använder AutoIt-verktyget och inbyggda varningar.

  • 🛡️ Proxy-roll: En proxy är en mellanhand som lägger till integritet, säkerhet och innehållsfiltrering.
  • 🔀 SOCKS kontra HTTP: SOCKS tolkar inte data; en HTTP-proxy läser bara HTTP-förfrågningar.
  • 🪟 Inbyggda popup-fönster: Selenium kan inte hantera operativsystemets dialogrutor, så extern hjälp krävs.
  • 🛠️ AutoIt-metoden: Ett kompilerat AutoIt-skript skickar användarnamnet och lösenordet till popup-fönstret.
  • ???? Aviseringsmetod: Växla till aviseringen och skicka autentiseringsuppgifter med sendKeys och acceptera sedan.

Hantera proxyautentisering i Selenium webbdrivrutin

Vad är en proxy?

En proxy fungerar som en mellanhand mellan klienter som skickar förfrågningar och serverns svar. Den primära användningen av en proxy är att upprätthålla integritet och inkapsling mellan flera interaktiva system.

En proxy kan också lägga till ytterligare ett säkerhetslager på webben genom att fungera som en brandvägg mellan klient och webbservrar. Detta används särskilt när de webbplatser som kunder använder måste märkas som tillåtna eller blockerade baserat på webbplatsens innehåll.

Denna process är känd som "Innehållsfiltrering" och används oftast i utbildningsinstitutioner, företagskontor etc. Innehållsfiltrering kan enkelt utföras med hjälp av en proxy. I termer av Internet kan en proxy implementeras som en separat server som står mellan klientmaskiner och faktiska webb- eller databasservrar som svarar.

Skillnaden mellan SOCKS och HTTP Proxy

SOCKS Http proxy
SOCKS står för säkrade uttag. Den används vanligtvis som en brandvägg mellan klienten och servern HTTP Proxy kan också användas som en brandvägg mellan klienten och servern men kan endast användas för HTTP-förfrågningar
SOCKS tolkar inte data som utbyts HTTP Proxy tolkar data som utbyts mellan klienten och servern
Långsammare prestandamässigt Bättre prestanda jämfört med SOCKS

Hur man hanterar proxy i Selenium Webdriver i Chrome

HTTP Proxy-autentisering med Selenium i Chrome kan hanteras med följande tillvägagångssätt

  • Använda AutoIt-verktyget
  • Använda Alerts

Använda AutoIt-verktyget

AutoIt är ett tredjepartsverktyg som används för automatisering av Windows-skrivbord. Selenium hanterar endast webbaserade popup-fönster och fönster, hantering av operativsystemkontroller är inte möjligt att använda Selenium.

Detta kräver användning av externa tredjepartsverktyg som AutoIt för att integreras med SeleniumFör det ändamålet används AutoIt oftast för att hantera filuppladdningar och filnedladdningar på webbplatser.

För att använda AutoIt måste du ladda ner och installera AutoIt-programvaran på våra lokala maskiner.

Ladda ner en installation av AutoIt beskrivs i Artikeln.

Öppna Program – Autoit-verktyget – SciTE Script Editor och lägg till nedan nämnda AutoIt-skript i Autoit-redigeraren och spara det som 'ProxyAuthentication.au3' i ditt system

Kompilera filen och konvertera den som 'ProxyAuthentication.exe.'

In Eclipse, lägg till AutoIt-filen till Selenium Skripta och köra

Nedan finns AutoIt-skriptet för HTTP-proxyautentisering

Send("guru99{ENTER}")
Send("guru99{ENTER}")

Du måste skicka AutoIt-filen för körning på Selenium webbdrivrutin med koden nedan

Källa Code:

package Guru99Demo;
import java.io.IOException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class AutoItDemo {
    public static void main(String[] args) throws IOException {
        System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");;
        WebDriver driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/basic_auth.php");
        //Passing the AutoIt Script to Selenium	
        Runtime.getRuntime().exec("D:\\Data_Personal\\ProxyAuthentication.exe");
    }
}

Code Förklaring:

  • I det första steget initierar du en instans av Chrome-drivrutinen genom att ställa in systemegenskapen för att peka på filen chromedriver.exe
  • I det andra steget initierar du sedan ett objekt av webbdrivrutinen och skickar webbplatsen URL använder get-metoden
  • Slutligen skickar du användarnamn och lösenord till HTTP-proxyautentiseringspopupen med hjälp av en AutoIt-skriptfil

Code Produktion:

Hantering av användarnamnsaviseringar med AutoIt
Hantering av användarnamnsaviseringar med AutoIt
Hantering av lösenordsvarningar med AutoIt

Hantering av lösenordsvarningar med AutoIt
Framgångsskärm för proxyautentisering

Framgångsskärm för proxyautentisering

Använda Alerts

Varningar är enkla, inbyggda funktion som tillhandahålls av Selenium webbdrivrutin. Du kan hantera popup-fönster för proxyautentisering med Selenium webbdrivrutin genom att byta till HTTP-proxyautentiseringsvarningen och skicka användarnamnet och lösenordet direkt till varningen. Med hjälp av metoden skicka nycklar.

Exempelvis:

Testscenario:

Hantera popup-fönstret för HTTP Proxy-autentisering på webbplatsen: https://demo.guru99.com/test/basic_auth.php använder Alerts i Selenium webbdrivrutin.

Exempel på källkod:

package Guru99Demo;
import java.io.IOException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class AlertsDemo {
    public static void main(String args[]) throws IOException {
        System.setProperty("webdriver.chrome.driver", "D:\\Data_Personal\\Software\\chromedriver_win32\\chromedriver.exe");;
        WebDriver driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/basic_auth.php");
        // Handling Username alert
        driver.switchTo().alert().sendKeys("guru99");
        driver.switchTo().alert().accept();
        // Handling Password alert
        driver.switchTo().alert().sendKeys("guru99");
        driver.switchTo().alert().accept();
    }
}

Code Produktion

Proxyautentisering klar.

Code Förklaring:

  • Inledningsvis instansierar du en instans av Chrome-drivrutinen genom att ställa in webdriver-egenskapen för att peka på platsen för filen chromedriver.exe
  • Sedan öppnar du URL av obligatorisk webbplats genom att skicka URL som en parameter till driver.get()-metoden
  • När URL öppnas, växlar du till användarnamnsaviseringen och skickar användarnamnet – guru99. Du klickar sedan på OK-knappen i aviseringen med hjälp av metoden alert.accept.
  • Sedan byter du till lösenordsvarningen och skickar lösenordet – guru99. Du klickar sedan på OK-knappen på varningen med metoden alert.accept

Vanliga frågor

Du kan bädda in inloggningsuppgifter som https://user:pass@site.com, men moderna Chrome och Firefox blockera detta av säkerhetsskäl. Aviseringar eller webbläsartillägg är nu mer tillförlitliga för proxyautentisering.

AutoIt automatiserar Windows skrivbordskontroller som Selenium inte kan nå, såsom popup-fönster för inbyggd autentisering och dialogrutor för filuppladdning. Du kompilerar ett AutoIt-skript till en körbar fil och anropar den från Selenium koda.

En proxy omdirigerar trafik för specifika applikationer eller webbläsare, främst genom att dölja IP-adresser eller filtrera innehåll. En VPN krypterar all enhetstrafik i hela systemet, vilket ger starkare integritet än en vanlig proxy.

Ja. AI-drivna testverktyg upptäcker autentiseringsdialogrutor, injicerar lagrade inloggningsuppgifter och självreparerar när popup-beteendet ändras, vilket minskar beroendet av bräckliga AutoIt-skript i olika webbläsare.

AI-verktyg roterar proxyservrar intelligent, upptäcker blockerade förfrågningar och anpassar väntetider när autentiseringsuppmaningar visas. Denna automatisering förbättrar teststabiliteten för webbplatser bakom företags- eller innehållsfiltrerande proxyservrar.

Ja. Selenium 4 lade till stöd för Chrome DevTools Protocol, vilket låter dig ställa in HTTP-inloggningsuppgifter programmatiskt och hantera grundläggande autentisering, vilket undviker AutoIt för många proxyscenarier.

Sammanfatta detta inlägg med: