Szukaj…


Wprowadzenie

Ten temat ma na celu pokazanie podstawowego programu sterownika sieciowego w językach obsługiwanych przez selen, takich jak C #, Groovy, Java, Perl, PHP, Python i Ruby.

Podróż obejmuje otwarcie sterownika przeglądarki -> Strona Google -> zamknięcie przeglądarki

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

Powyższy „program” przejdzie do strony głównej Google, a następnie zamknie przeglądarkę po pełnym załadowaniu strony.

using (var driver = new ChromeDriver())

To tworzy instancję nowego obiektu WebDriver za pomocą interfejsu IWebdriver i tworzy nową instancję okna przeglądarki. W tym przykładzie używamy ChromeDriver (choć można go zastąpić odpowiednim sterownikiem dla dowolnej przeglądarki, której chcemy użyć). IWebDriver to instrukcją using , ponieważ IWebDriver implementuje IDisposable , dlatego nie trzeba jawnie wpisywać driver.Quit(); .

W przypadku, gdy nie pobrałeś swojego WebDrivera za pomocą NuGet , musisz przekazać argument w postaci ścieżki do katalogu, w którym znajduje się sam sterownik „chromedriver.exe”.


Żeglujący

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

i

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

Obie te linie robią to samo. Instruują sterownik, aby przejść do określonego adresu URL i czekać, aż strona zostanie załadowana, zanim przejdzie do następnej instrukcji.

Istnieją inne metody związane z nawigacją, takie jak Back() , Forward() lub Refresh() .


Następnie blok using bezpiecznie kończy pracę i usuwa obiekt.

Pyton

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

Powyższy „program” przejdzie do strony głównej Google, a następnie zamknie przeglądarkę przed zakończeniem.

if '__main__' == __name__:
    get_google()

Najpierw mamy naszą główną funkcję, nasz punkt wejścia do programu, który wywołuje get_google() .

def get_google():
    driver = set_up_driver()

get_google() następnie zaczyna od utworzenia naszego wystąpienia driver za pomocą set_up_driver() :

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

Stwierdzamy, gdzie znajduje się chromedriver.exe , i tworzymy instancję obiektu sterownika za pomocą tej ścieżki. Pozostała część get_google() przechodzi do Google:

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

Następnie wywołuje tear_down() przekazując obiekt sterownika:

tear_down(driver)

tear_down() zawiera po prostu jedną linię do zamknięcia naszego obiektu sterownika:

driver.quit()

Mówi to sterownikowi, aby zamknął wszystkie otwarte okna przeglądarki i pozbył się obiektu przeglądarki, ponieważ po tym wywołaniu nie mamy innego kodu, co skutecznie kończy program.

Jawa

Poniższy kod składa się z około 3 kroków.

  1. Otwieranie przeglądarki Chrome
  2. Otwieranie strony google
  3. Zamknij przeglądarkę
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();
    }
}

Powyższy „program” przejdzie do strony głównej Google, a następnie zamknie przeglądarkę przed zakończeniem.

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

Pierwszy wiersz informuje system, gdzie znaleźć plik wykonywalny ChromeDriver (chromedriver.exe). Następnie tworzymy nasz obiekt sterownika, wywołując konstruktor ChromeDriver() , ponownie możemy wywoływać naszego konstruktora tutaj dla dowolnej przeglądarki / platformy.

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

Informuje to naszego kierowcę, aby przejść do określonego adresu URL: http://www.google.com . Interfejs API Java WebDriver zapewnia metodę get() bezpośrednio w interfejsie WebDriver, chociaż dalsze metody nawigacji można znaleźć za pomocą metody navigate() , np. driver.navigate.back() .

Po zakończeniu ładowania strony natychmiast dzwonimy:

driver.quit();

Mówi to sterownikowi, aby zamknął wszystkie otwarte okna przeglądarki i pozbył się obiektu sterownika, ponieważ po tym wywołaniu nie mamy innego kodu, co skutecznie kończy program.

driver.close();

Jest instrukcją (nie pokazaną tutaj) dla sterownika, aby zamknąć tylko aktywne okno, w tym przypadku, ponieważ mamy tylko jedno okno, instrukcje spowodowałyby identyczne wyniki przy wywołaniu quit() .

Java - najlepsza praktyka z klasami stron

Przypadek użycia: Zaloguj się do konta 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());
    }

}

Klasy stron: Strona logowania i strona główna Klasa strony logowania:

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

Klasa strony głównej:

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow