selenium-webdriver
Basic Selenium Webdriver-Programm
Suche…
Einführung
Dieses Thema soll das grundlegende Webtreiberprogramm in selengestützten Sprachen wie C #, Groovy, Java, Perl, PHP, Python und Ruby zeigen.
Journey beinhaltet das Öffnen des Browsertreibers -> Google Page -> Herunterfahren des Browsers
C #
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
namespace BasicWebdriver
{
class WebDriverTest
{
static void Main()
{
using (var driver = new ChromeDriver())
{
driver.Navigate().GoToUrl("http://www.google.com");
}
}
}
}
Das obige "Programm" navigiert zur Google-Startseite und schließt den Browser nach dem vollständigen Laden der Seite.
using (var driver = new ChromeDriver())
Dadurch wird ein neues WebDriver-Objekt mithilfe der IWebdriver
Schnittstelle IWebdriver
und eine neue Browserfensterinstanz erstellt. In diesem Beispiel verwenden wir ChromeDriver
(dies könnte jedoch durch den entsprechenden Treiber für den gewünschten Browser ersetzt werden). Wir wickeln diese mit einer using
Aussage, weil IWebDriver
implementiert IDisposable
, so brauchen nicht explizit in den Typ driver.Quit();
.
Falls Sie Ihren WebDriver nicht mit NuGet heruntergeladen haben, müssen Sie ein Argument in Form eines Pfads zu dem Verzeichnis übergeben, in dem sich der Treiber "chromedriver.exe" befindet.
Navigieren
driver.Navigate().GoToUrl("http://www.google.com");
und
driver.Url = "http://www.google.com";
Beide Linien machen dasselbe. Sie weisen den Treiber an, zu einer bestimmten URL zu navigieren und zu warten, bis die Seite geladen ist, bevor sie zur nächsten Anweisung wechselt.
Es gibt andere Methoden, die mit der Navigation verknüpft sind, z. B. Back()
, Forward()
oder Refresh()
.
Danach wird der using
sicher beendet und das Objekt entsorgt.
Python
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
def set_up_driver():
path_to_chrome_driver = 'chromedriver'
return webdriver.Chrome(executable_path=path_to_chrome_driver)
def get_google():
driver = set_up_driver()
driver.get('http://www.google.com')
tear_down(driver)
def tear_down(driver):
driver.quit()
if '__main__' == __name__:
get_google()
Das obige "Programm" navigiert zur Google-Startseite und schließt dann den Browser, bevor Sie den Vorgang abschließen.
if '__main__' == __name__:
get_google()
Zuerst haben wir unsere Hauptfunktion, unseren Einstiegspunkt in das Programm, der get_google()
.
def get_google():
driver = set_up_driver()
get_google()
erstellt zunächst unsere driver
über set_up_driver()
:
def set_up_driver():
path_to_chrome_driver = 'chromedriver'
return webdriver.Chrome(executable_path=path_to_chrome_driver)
Dabei geben wir an, wo sich chromedriver.exe
befindet, und instanziieren unser chromedriver.exe
mit diesem Pfad. Der Rest von get_google()
navigiert zu Google:
driver.get('http://www.google.com')
tear_down()
dann tear_down()
übergibt das tear_down()
:
tear_down(driver)
tear_down()
enthält lediglich eine Zeile, um unser tear_down()
herunterzufahren:
driver.quit()
Dadurch wird der Treiber angewiesen, alle geöffneten Browserfenster zu schließen und das Browserobjekt zu löschen, da nach diesem Aufruf kein anderer Code vorhanden ist. Dadurch wird das Programm effektiv beendet.
Java
Der folgende Code besteht aus 3 Schritten.
- Chrome-Browser öffnen
- Google-Seite öffnen
- Fahren Sie den Browser herunter
import org.openqa.selenium;
import org.openqa.selenium.chrome;
public class WebDriverTest {
public static void main(String args[]) {
System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.google.com");
driver.quit();
}
}
Das obige "Programm" navigiert zur Google-Startseite und schließt dann den Browser, bevor Sie den Vorgang abschließen.
System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
In der ersten Zeile wird angegeben, wo sich die ausführbare Datei ChromeDriver
(chromedriver.exe) befindet. Dann erstellen wir unser ChromeDriver()
durch Aufruf des ChromeDriver()
. Wieder könnten wir unseren Konstruktor hier für jeden Browser / jede Plattform aufrufen.
driver.get("http://www.google.com");
Dadurch wird unser Treiber angewiesen, zur angegebenen URL zu navigieren: http://www.google.com . Der Java WebDriver API bietet die get()
Methode direkt auf der WebDriver Schnittstelle, obwohl weitere Navigationsmethoden können über die gefunden werden navigate()
Methode, zB driver.navigate.back()
.
Sobald die Seite geladen ist, rufen wir sofort an:
driver.quit();
Dies weist den Treiber an, alle geöffneten Browserfenster zu schließen und das Treiberobjekt zu löschen, da nach diesem Aufruf kein anderer Code vorhanden ist, wodurch das Programm effektiv beendet wird.
driver.close();
Ist eine Anweisung (hier nicht dargestellt) an den Treiber, nur das aktive Fenster zu schließen, würden wir in diesem Fall, da wir nur ein einziges Fenster haben, identische Ergebnisse beim Aufruf von quit()
.
Java - Best Practice bei Seitenklassen
Anwendungsfall: Melden Sie sich beim FB-Konto an
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class FaceBookLoginTest {
private static WebDriver driver;
HomePage homePage;
LoginPage loginPage;
@BeforeClass
public void openFBPage(){
driver = new FirefoxDriver();
driver.get("https://www.facebook.com/");
loginPage = new LoginPage(driver);
}
@Test
public void loginToFB(){
loginPage.enterUserName("username");
loginPage.enterPassword("password");
homePage = loginPage.clickLogin();
System.out.println(homePage.getUserName());
}
}
Seitenklassen: Login-Seite & Startseite Login-Seitenklasse:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
public class LoginPage {
WebDriver driver;
public LoginPage(WebDriver driver){
this.driver = driver;
}
@FindBy(id="email")
private WebElement loginTextBox;
@FindBy(id="pass")
private WebElement passwordTextBox;
@FindBy(xpath = ".//input[@data-testid='royal_login_button']")
private WebElement loginBtn;
public void enterUserName(String userName){
if(loginTextBox.isDisplayed()) {
loginTextBox.clear();
loginTextBox.sendKeys(userName);
}
else{
System.out.println("Element is not loaded");
}
}
public void enterPassword(String password){
if(passwordTextBox.isDisplayed()) {
passwordTextBox.clear();
passwordTextBox.sendKeys(password);
}
else{
System.out.println("Element is not loaded");
}
}
public HomePage clickLogin(){
if(loginBtn.isDisplayed()) {
loginBtn.click();
}
return new HomePage(driver);
}
}
Homepage-Klasse:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
public class HomePage {
WebDriver driver;
public HomePage(WebDriver driver){
this.driver = driver;
}
@FindBy(xpath=".//a[@data-testid='blue_bar_profile_link']/span")
private WebElement userName;
public String getUserName(){
if(userName.isDisplayed()) {
return userName.getText();
}
else {
return "Username is not present";
}
}
}