Ricerca…


introduzione

Questo argomento si propone di mostrare il programma di base del driver web in lingue supportate dal selenio come C #, Groovy, Java, Perl, PHP, Python e Ruby.

Il viaggio include l'apertura del driver del browser -> Pagina Google -> chiusura del browser

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");
            }
        }
    }
}

Il suddetto "programma" passerà alla home page di Google, quindi chiuderà il browser dopo aver caricato completamente la pagina.

using (var driver = new ChromeDriver())

Questo istanzia un nuovo oggetto WebDriver utilizzando l'interfaccia IWebdriver e crea una nuova istanza della finestra del browser. In questo esempio stiamo usando ChromeDriver (anche se questo potrebbe essere sostituito dal driver appropriato per qualsiasi browser volessimo usare). Stiamo IWebDriver wrapping con un'istruzione using , perché IWebDriver implementa IDisposable , quindi non è necessario digitare esplicitamente driver.Quit(); .

Nel caso in cui non hai scaricato il tuo WebDriver usando NuGet , dovrai passare un argomento sotto forma di un percorso alla directory in cui si trova il driver stesso "chromedriver.exe".


driver.Navigate().GoToUrl("http://www.google.com");

e

driver.Url = "http://www.google.com";

Entrambe queste linee fanno la stessa cosa. Istruiscono il guidatore a navigare verso un URL specifico e ad attendere che la pagina venga caricata prima di passare all'istruzione successiva.

Esistono altri metodi legati alla navigazione come Back() , Forward() o Refresh() .


Dopodiché, il blocco using chiude in sicurezza e smaltisce l'oggetto.

Pitone

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()

Il suddetto "programma" passerà alla home page di Google e quindi chiuderà il browser prima di completarlo.

if '__main__' == __name__:
    get_google()

Per prima cosa abbiamo la nostra funzione principale, il nostro punto di ingresso nel programma, che chiama get_google() .

def get_google():
    driver = set_up_driver()

get_google() inizia quindi creando la nostra istanza driver tramite set_up_driver() :

def set_up_driver():
    path_to_chrome_driver = 'chromedriver'
    return webdriver.Chrome(executable_path=path_to_chrome_driver)

Per cui viene chromedriver.exe dove si trova chromedriver.exe e istanzia il nostro oggetto driver con questo percorso. Il resto di get_google() passa a Google:

driver.get('http://www.google.com')

E poi chiama tear_down() passando l'oggetto driver:

tear_down(driver)

tear_down() contiene semplicemente una riga per chiudere il nostro oggetto driver:

driver.quit()

Questo dice al guidatore di chiudere tutte le finestre del browser aperte e smaltire l'oggetto del browser, dato che non abbiamo altro codice dopo questa chiamata, questo termina efficacemente il programma.

Giava

Il codice sotto è di circa 3 passi.

  1. Aprire un browser Chrome
  2. Apertura di google page
  3. Spegni il browser
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();
    }
}

Il suddetto "programma" passerà alla home page di Google e quindi chiuderà il browser prima di completarlo.

System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
WebDriver driver = new ChromeDriver();

La prima riga indica al sistema dove trovare l' ChromeDriver (chromedriver.exe). Creiamo quindi il nostro oggetto driver chiamando il ChromeDriver() , di nuovo potremmo chiamare il nostro costruttore qui per qualsiasi browser / piattaforma.

driver.get("http://www.google.com");

Ciò indica al nostro autista di navigare nell'URL specificato: http://www.google.com . L'API Java WebDriver fornisce il metodo get() direttamente sull'interfaccia WebDriver, sebbene sia possibile trovare ulteriori metodi di navigazione tramite il metodo navigate() , ad esempio driver.navigate.back() .

Una volta che la pagina ha terminato il caricamento, chiamiamo immediatamente:

driver.quit();

Questo dice al driver di chiudere tutte le finestre del browser aperte e di eliminare l'oggetto del driver, poiché non abbiamo altro codice dopo questa chiamata, questo termina efficacemente il programma.

driver.close();

È un'istruzione (non mostrata qui) al driver per chiudere solo la finestra attiva, in questo caso poiché abbiamo una sola finestra le istruzioni causerebbero risultati identici al chiamare quit() .

Java: best practice con classi di pagine

Usecase: accedi all'account FB

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());
    }

}

Classi di pagine: pagina di accesso e pagina iniziale pagina di accesso:

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);
    }
}

Classe di home page:

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";
        }
    }

}


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow