Buscar..


Introducción

Este tema tiene como objetivo mostrar el programa de controlador web básico en selenium lenguajes compatibles como C #, Groovy, Java, Perl, PHP, Python y Ruby.

Journey incluye abrir el controlador del navegador -> Página de Google -> apagar el navegador

DO#

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

El 'programa' anterior navegará a la página de inicio de Google, y luego cerrará el navegador después de cargar completamente la página.

using (var driver = new ChromeDriver())

Esto crea una instancia de un nuevo objeto WebDriver utilizando la interfaz IWebdriver y crea una nueva instancia de la ventana del navegador. En este ejemplo, estamos usando ChromeDriver (aunque esto podría ser reemplazado por el controlador apropiado para cualquier navegador que ChromeDriver usar). Estamos envolviendo esto con una declaración using , porque IWebDriver implementa IDisposable , por lo que no es necesario que escriba explícitamente en driver.Quit(); .

En caso de que no haya descargado su WebDriver usando NuGet , entonces deberá pasar un argumento en forma de ruta al directorio donde se encuentra el controlador "chromedriver.exe".


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

y

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

Ambas líneas hacen lo mismo. Le indican al conductor que navegue a una URL específica y que espere hasta que la página se cargue antes de pasar a la siguiente declaración.

Existen otros métodos relacionados con la navegación, como Back() , Forward() o Refresh() .


Después de eso, el bloque de using se cierra de forma segura y elimina el objeto.

Pitón

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

El 'programa' anterior navegará a la página de inicio de Google y luego cerrará el navegador antes de completar.

if '__main__' == __name__:
    get_google()

Primero tenemos nuestra función principal, nuestro punto de entrada en el programa, que llama a get_google() .

def get_google():
    driver = set_up_driver()

get_google() luego comienza creando nuestra instancia de driver través de set_up_driver() :

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

Por medio del cual indicamos dónde se encuentra chromedriver.exe , y chromedriver.exe instancia de nuestro objeto controlador con esta ruta. El resto de get_google() navega a Google:

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

Y luego llama a tear_down() pasando el objeto controlador:

tear_down(driver)

tear_down() simplemente contiene una línea para cerrar nuestro objeto controlador:

driver.quit()

Esto le indica al controlador que cierre todas las ventanas abiertas del navegador y elimine el objeto del navegador, ya que después de esta llamada no tenemos ningún otro código, esto termina el programa de manera efectiva.

Java

El código de abajo es todo sobre 3 pasos.

  1. Abriendo un navegador chrome
  2. Apertura de la página de google
  3. Apagar el navegador
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();
    }
}

El 'programa' anterior navegará a la página de inicio de Google y luego cerrará el navegador antes de completar.

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

La primera línea le dice al sistema dónde encontrar el ChromeDriver (chromedriver.exe). Luego creamos nuestro objeto controlador llamando al constructor ChromeDriver() , nuevamente podríamos estar llamando a nuestro constructor aquí para cualquier navegador / plataforma.

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

Esto le dice a nuestro conductor que navegue a la url especificada: http://www.google.com . La API de Java WebDriver proporciona el método get() directamente en la interfaz de WebDriver, aunque se pueden encontrar más métodos de navegación a través del método de navigate() , por ejemplo, driver.navigate.back() .

Una vez que la página ha terminado de cargar, llamamos inmediatamente:

driver.quit();

Esto le indica al controlador que cierre todas las ventanas abiertas del navegador y deseche el objeto del controlador, ya que después de esta llamada no tenemos ningún otro código, esto termina el programa de manera efectiva.

driver.close();

Es una instrucción (que no se muestra aquí) del controlador para cerrar solo la ventana activa; en este caso, como solo tenemos una ventana, las instrucciones causarán resultados idénticos a la llamada a quit() .

Java - Mejores prácticas con clases de página

Caso de uso: iniciar sesión en la cuenta 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());
    }

}

Clases de página: Página de inicio y Página de inicio Clase de página de inicio:

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

Página de inicio de la clase:

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow