Поиск…


Вступление

В этом разделе показана основная программа для веб-драйверов на языках, поддерживающих селен, таких как C #, Groovy, Java, Perl, PHP, Python и Ruby.

Путешествие включает в себя открытие драйвера браузера -> Страница Google -> выключение браузера

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

Вышеупомянутая «программа» переместится на главную страницу Google, а затем закроет браузер после полной загрузки страницы.

using (var driver = new ChromeDriver())

Это создает новый объект WebDriver с использованием интерфейса IWebdriver и создает новый экземпляр окна браузера. В этом примере мы используем ChromeDriver (хотя это может быть заменено соответствующим драйвером для любого браузера, который мы хотели использовать). Мы обертываем это с using инструкции using , потому что IWebDriver реализует IDisposable , поэтому не нужно явно вводить driver.Quit(); ,

Если вы не загрузили свой WebDriver с помощью NuGet , вам необходимо передать аргумент в виде пути к каталогу, в котором находится сам драйвер «chromedriver.exe».


навигационный

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

а также

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

Обе эти линии делают то же самое. Они инструктируют драйвер для перехода к определенному URL-адресу и дождаться загрузки страницы до того, как он перейдет к следующему оператору.

Существуют другие методы, связанные с навигацией, такие как Back() , Forward() или Refresh() .


После этого блок using безопасно завершает работу и удаляет объект.

питон

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

Вышеупомянутая «программа» перейдет на главную страницу Google, а затем закроет браузер до завершения.

if '__main__' == __name__:
    get_google()

Сначала у нас есть наша основная функция, наша точка входа в программу, которая вызывает get_google() .

def get_google():
    driver = set_up_driver()

get_google() затем начинается с создания нашего экземпляра driver через set_up_driver() :

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

Здесь мы указываем, где находится chromedriver.exe , и chromedriver.exe экземпляр нашего объекта драйвера с помощью этого пути. Остальная часть get_google() переместится в Google:

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

А затем вызывает tear_down() передающую объект драйвера:

tear_down(driver)

tear_down() просто содержит одну строку для закрытия нашего объекта драйвера:

driver.quit()

Это говорит о том, что драйвер закрывает все открытые окна браузера и удаляет объект браузера, так как у нас нет другого кода после этого вызова, это фактически завершает работу программы.

Джава

Код ниже - всего 3 шага.

  1. Открытие хромового браузера
  2. Открытие страницы google
  3. Выключение браузера
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();
    }
}

Вышеупомянутая «программа» перейдет на главную страницу Google, а затем закроет браузер до завершения.

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

Первая строка сообщает системе, где можно найти исполняемый файл ChromeDriver (chromedriver.exe). Затем мы создаем наш объект драйвера, вызывая конструктор ChromeDriver() , и снова мы можем вызвать наш конструктор здесь для любого браузера / платформы.

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

Это говорит нашему драйверу перейти к указанному URL- адресу : http://www.google.com . API Java WebDriver предоставляет метод get() непосредственно в интерфейсе WebDriver, хотя дальнейшие методы навигации можно найти с помощью метода navigate() , например driver.navigate.back() .

Как только страница закончит загрузку, мы сразу вызываем:

driver.quit();

Это говорит о том, что драйвер закрывает все открытые окна браузера и удаляет объект драйвера, так как у нас нет другого кода после этого вызова, это фактически завершает работу программы.

driver.close();

Является инструкцией (не показана здесь) драйверу, чтобы закрыть только активное окно, в этом случае, поскольку у нас есть только одно окно, инструкции приведут к идентичным результатам для вызова quit() .

Java - Лучшая практика с классами страниц

Usecase: Войдите в учетную запись 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());
    }

}

Классы страниц: Вход в систему Страница и главная страница Класс входной страницы:

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

Класс домашней страницы:

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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow