В поддержку новой инициативы - мега склад примеров на github
Создаем примеры по автоматизации вместе, просто присылайте pull requrest
А также инициативы создания at.info code recipes
Всем привет, в предисловии к Как настроить Jenkins+Thucydides Unix-based OS + Maven
Создадим небольшой тестик (весь код проекта можно скачать из мега-склада на github):
на текущий момент я использую такую сборку: Selenium+Java+IntellijIdea+JUnit+Maven+Thucydides+Jenkins
Нам понадобится следующие классы:
- GoogleNavigationAndSearch - Main
import net.thucydides.core.annotations.*;
import net.thucydides.core.pages.Pages;
import net.thucydides.junit.annotations.Concurrent;
import net.thucydides.junit.runners.ThucydidesRunner;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.openqa.selenium.WebDriver;
import java.util.Properties;
@Story(Application.Register.Booking.class)
@RunWith(ThucydidesRunner.class)
@Concurrent(threads="1")
public class GoogleNavigationAndSearch
{
public Properties keyWords;
{
keyWords = PropertiesReader.readProperties("Google.properties"); // Подгружаем файл с данными
}
@Managed(uniqueSession = true)
private WebDriver driver;
@Before
public void myTest() throws Exception
{
System.setProperty("webdriver.chrome.driver", "/home/rb/Downloads/chromedriver"); // Путь для хромдрайвера
driver.manage().window().maximize();
}
@After
public void close()
{
driver.close();
}
@ManagedPages(defaultUrl = "http://google.com/")
public Pages pages;
@Steps
public GoogleNavigation google;
// @WithDriver("chrome")
@WithTag("googleSearch")
@Test
public void GuestBooking() throws InterruptedException
{
google.start_browser();
google.input_search_query(keyWords.getProperty("searchQuery"));
google.click_to_submit_search_query();
Thread.sleep(15000);
}
}
- GoogleNavigation - Steps
import net.thucydides.core.annotations.Step;
import net.thucydides.core.pages.Pages;
import net.thucydides.core.steps.ScenarioSteps;
public class GoogleNavigation extends ScenarioSteps
{
Google google;
public GoogleNavigation(Pages pages)
{
super(pages);
}
@Step
public void start_browser()
{
Google loginPage = getPages().get(Google.class);
loginPage.open();
}
@Step
public void input_search_query(String searchQuery)
{
google.setInputField(searchQuery);
}
@Step
public void click_to_submit_search_query() throws InterruptedException
{
google.setSubmitSearch();
}
}
- Google - класс для поиска элементов
import net.thucydides.core.pages.PageObject;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
public class Google extends PageObject
{
private static final Integer CATALOG_WAIT_FOR_TIMEOUT = 20000;
public Google(WebDriver driver) {
super(driver, CATALOG_WAIT_FOR_TIMEOUT);
}
@FindBy(name = "q")
private WebElement inputField;
public void setInputField(String searchQuery)
{
element(inputField).type(searchQuery);
}
@FindBy(xpath = "//div/div[3]/div[1]/div[1]/div[3]/div/div/div/form/div[1]/button")
@FindBy(id = "gbqfb")
private WebElement submitSearch;
public void setSubmitSearch() throws InterruptedException
{
element(submitSearch).click();
}
}
- Application - //Указываем Story для тестов относительно нее будет сформирован отчет
import net.thucydides.core.annotations.Feature;
public class Application
{
@Feature
public class Register
{
public class Booking{}
}
}
- PropertiesReader - класс необходимый для подгрузки файлов (e.g. Google.properties)
import java.io.*;
import java.util.Properties;
public class PropertiesReader
{
public static Properties readProperties(String name)
{
Properties properties = new Properties();
InputStream stream = null;
try
{
stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(name);
properties.load(stream);
}
catch (IOException e)
{
e.printStackTrace();
} finally
{
if (stream != null)
{
try
{
stream.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
return properties;
}
}
- Google.properties - Ну и сам файлик с данными
searchQuery = testing
- POM
В данному примере мы рассматривали обычную работу с гуглом:
- Запуск браузера - google.start_browser();
- Вписываем в поле ввода запрос - google.input_search_query(keyWords.getProperty(“searchQuery”));
- Нажимаем кнопку для подтверждение запроса - google.click_to_submit_search_query();
- Ждём, чтобы убедиться визуально, что всё хорошо - Thread.sleep(15000);
Весь код проекта можно найти и скачать из мега-склада на github
Пусть таких примеров станет больше, присылайте pull request на наш мега-склад примеров.