수색…


소개

이 주제는 C #, Groovy, Java, Perl, PHP, Python 및 Ruby와 같은 셀렌 지원 언어로 기본 웹 드라이버 프로그램을 표시하는 것을 목표로합니다.

여행은 브라우저 드라이버 -> Google 페이지 -> 브라우저 종료를 포함합니다.

기음#

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

이렇게하면 IWebdriver 인터페이스를 사용하여 새 WebDriver 객체를 인스턴스화하고 새 브라우저 윈도우 인스턴스를 만듭니다. 이 예제에서는 ChromeDriver 를 사용 ChromeDriver ( ChromeDriver 드라이버는 사용하고자하는 브라우저에 맞는 드라이버로 교체 할 수 있습니다). IWebDriverIDisposable 구현하므로 driver.Quit(); 에 명시 적으로 입력 할 필요가 없으므로 using 문으로이 래핑합니다 driver.Quit(); .

NuGet을 사용하여 WebDriver를 다운로드하지 않은 경우, 드라이버 자체 "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) 로 이동합니다. Java WebDriver API는 WebDriver 인터페이스에서 직접 get() 메서드를 제공하지만 navigate() 메서드 (예 : driver.navigate.back() navigate() 를 통해 추가 탐색 메서드를 찾을 수 있습니다.

페이지로드가 완료되면 즉시 다음을 호출합니다.

driver.quit();

이렇게하면 드라이버가 열려있는 브라우저 창을 모두 닫고 드라이버 객체를 처리하게됩니다.이 호출 후에 다른 코드가 없으므로 프로그램이 실제로 종료됩니다.

driver.close();

드라이버에 대한 명령 (여기서는 표시되지 않음)이 활성 창만 닫습니다.이 경우 명령에서 단일 창만 있기 때문에 동일한 결과가 quit() 를 호출하게됩니다.

자바 - 페이지 클래스를 사용한 우수 사례

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