selenium-webdriver
기본 Selenium Webdriver 프로그램
수색…
소개
이 주제는 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 드라이버는 사용하고자하는 브라우저에 맞는 드라이버로 교체 할 수 있습니다). IWebDriver 는 IDisposable 구현하므로 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 단계입니다.
- 크롬 브라우저 열기
- Google 페이지 열기
- 브라우저 종료
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";
}
}
}