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