selenium-webdriver
Программа Basic Selenium Webdriver
Поиск…
Вступление
В этом разделе показана основная программа для веб-драйверов на языках, поддерживающих селен, таких как 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 шага.
- Открытие хромового браузера
- Открытие страницы 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 . 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";
}
}
}