selenium-webdriver
Podstawowy program Selenium Webdriver
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.
- Otwieranie przeglądarki Chrome
- Otwieranie strony google
- 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";
}
}
}