Selenium WebDriver
Wir benötigen Browser, um Webanwendungen zu testen. Selenium automatisiert Browser und hilft uns bei der Automatisierung von Tests von Webanwendungen in verschiedenen Browsern. Die Selenium-API hat viele Klassen und Schnittstellen bereitgestellt, um mit verschiedenen Arten von Browsern und HTML-Elementen zu arbeiten.
Was ist die Selenium WebDriver-Schnittstelle?
Selenium WebDriver ist eine Schnittstelle, die eine Reihe von Methoden definiert. Die Implementierung wird jedoch durch die browserspezifischen Klassen bereitgestellt. Einige der Implementierungsklassen sind AndroidDriver, ChromeDriver, FirefoxDriver, InternetExplorerDriver, IPhoneDriver, SafariDriver usw. Die Hauptfunktionalität von WebDriver besteht darin, den Browser zu steuern. Es hilft uns sogar, die HTML-Seitenelemente auszuwählen und Operationen wie Klicken, Ausfüllen von Formularfeldern usw. an ihnen durchzuführen.
Wenn wir Ihre Testfälle in einem Firefox-Browser ausführen möchten, müssen wir die FirefoxDriver-Klasse verwenden. Ähnlich, wenn wir die Testfälle im Chrome-Browser ausführen möchten, müssen wir die ChromeDriver-Klasse verwenden.
Selenium WebDriver-Methoden
SearchContext ist die oberste Schnittstelle in der Selenium-API, die zwei Methoden hat – findElement() und findElements(). Die Selenium WebDriver-Schnittstelle hat viele abstrakte Methoden wie get(String url), quit(), close(), getWindowHandle(), getWindowHandles(), getTitle() usw. WebDriver hat verschachtelte Schnittstellen wie Window, Navigation, Timeouts usw. Diese verschachtelten Schnittstellen werden verwendet, um Operationen wie back(), forward() usw. durchzuführen.
- get(String url): Diese Methode startet einen neuen Browser und öffnet die angegebene URL in der Browserinstanz.
- getWindowHandle(): Sie wird verwendet, um ein einzelnes Fenster, d.h. das Hauptfenster, zu handhaben. Der Rückgabetyp ist String. Sie gibt den Browserfenster-Handle des fokussierten Browsers zurück.
- getWindowHandles(): Sie wird verwendet, um mehrere Fenster zu handhaben. Der Rückgabetyp ist Set. Sie gibt alle Handles von allen durch Selenium WebDriver geöffneten Browsern zurück.
- close(): Dieser Befehl wird verwendet, um das aktuell fokussierte Browserfenster zu schließen.
- quit(): Diese Methode schließt alle aktuell geöffneten Browserfenster und beendet die WebDriver-Sitzung.
- getTitle(): Diese Methode wird verwendet, um den Titel der Webseite, auf der der Benutzer gerade arbeitet, abzurufen.
Liste der Klassen, die WebDriver implementieren
Die wichtigsten Implementierungsklassen der WebDriver-Schnittstelle sind ChromeDriver, EdgeDriver, FirefoxDriver, InternetExplorerDriver usw. Jede Treiberklasse entspricht einem Browser. Wir erstellen einfach das Objekt der Treiberklassen und arbeiten mit ihnen.
- ChromeDriver: Er hilft Ihnen, Selenium-Skripte im Chrome-Browser auszuführen.
- FirefoxDriver: Er hilft Ihnen, Selenium-Skripte im Firefox-Browser auszuführen.
- InternetExplorerDriver: Er hilft Ihnen, Selenium-Skripte im InternetExplorer-Browser auszuführen.
Liste der Befehle auf WebElement
Selenium WebElement repräsentiert ein HTML-Element. Wir können eine Instanz von WebElement mit der Methode findElement() erhalten und dann spezifische Aktionen wie Klicken, Absenden usw. ausführen. Einige der häufig verwendeten WebElement-Methoden sind:
Befehl | Beschreibung | Syntax |
---|---|---|
findElement() | Diese Methode findet das erste Element innerhalb der aktuellen Webseite unter Verwendung des gegebenen Lokalisators. | WebElement element = driverObject.findElement(By.locator(“Wert”)); |
sendKeys() | Diese Methode gibt einen Wert in ein Bearbeitungsfeld oder Textfeld ein. | driver.findElement(By.elementLocator(“Wert”)).sendkeys(“Wert”); |
clear() | Es löscht den Wert aus einem Bearbeitungsfeld oder Textfeld. | driverObject.findElement(By.locatorname(“Wert”)).clear(); |
click() | Es klickt ein Element (Button, Link, Checkbox) usw. | driverObject.findElement(By.ElementLocator(“LocatorWert”)).click(); |
Selenium WebDriver Beispiel – Webseite Titel ausgeben
Lassen Sie uns ein einfaches Beispiel ansehen, wie Selenium WebDriver verwendet wird, um den Firefox-Browser aufzurufen und den Titel einer Webseite auszudrucken.
package com.journaldev.selenium.firefox;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class GeckoDriverExample {
public static void main(String[] args) {
//specify the location of GeckoDriver for Firefox browser automation
System.setProperty("webdriver.gecko.driver", "geckodriver");
WebDriver driver = new FirefoxDriver();
driver.get("https://journaldev.com");
String PageTitle = driver.getTitle();
System.out.println("Page Title is:" + PageTitle);
driver.close();
}
}
Output:
1551941763563 mozrunner::runner INFO Running command: "/Applications/Firefox.app/Contents/MacOS/firefox-bin" "-marionette" "-foreground" "-no-remote" "-profile" "/var/folders/1t/sx2jbcl534z88byy78_36ykr0000gn/T/rust_mozprofile.t6ZyMHsrf2bh"
1551941764296 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid host permission: resource://pdf.js/
1551941764297 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid host permission: about:reader*
Can't find symbol 'GetGraphicsResetStatus'.
1551941765794 Marionette INFO Listening on port 61417
1551941765818 Marionette WARN TLS certificate errors will be ignored for this session
Mar 07, 2019 12:26:05 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
Page Title is:JournalDev - Java, Java EE, Android, Python, Web Development Tutorials
1551941814652 Marionette INFO Stopped listening on port 61417