Использование в приложении¶
При использовании библиотеки в самостоятельном приложении необходимо выполнить:
Подключение клиента (
Client
) к серверу приложений и получение экземпляра приложенияApplication
.Выполнение основной логики вашей программы с использованием полученного экземпляра приложения.
Отключение клиента от сервера приложений.
Подключение клиента к серверу приложений¶
Создание экземпляра Web-драйвера¶
Web-драйвер — это компонент библиотеки Selenium, осуществляющий взаимодействие с браузером.
Для каждого браузера (например, Chrome, Firefox) существует отдельная реализация Web-драйвера.
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
RemoteWebDriver driver = new ChromeDriver();
Установка реквизитов авторизации пользователя и выбор решения¶
Реквизиты авторизации пользователя представлены объектом типа
UserPassword
.
Совокупность реквизитов авторизации пользователя и выбранного решения представляется
объектом типа UserPasswordSolution
.
Эти объекты создаются с помощью фабричного класса
CredentialsFactory
.
import ru.bitec.gs.automation.security.CredentialsFactory;
import ru.bitec.gs.automation.security.UserPassword;
import ru.bitec.gs.automation.security.UserPasswordSolution;
UserPassword userCredential = CredentialsFactory.userPassword("user", "password");
UserPasswordSolution userSolutionCredential = CredentialsFactory.userPasswordSolution("user", "password", "PGTEST");
Пример демонстрирует создание двух типов объектов авторизации:
простого (userCredential
) и объединённого с выбранным решением (userSolutionCredential
).
Назначение административных реквизитов¶
Административные реквизиты необходимы для выполнения действий с пользовательскими сессиями.
Назначение производится аналогично установке реквизитов авторизации обычного пользователя. (см. Установка реквизитов авторизации пользователя и выбор решения)
Определение стратегии подключения к серверу приложений¶
Стратегию подключения определяет объект типа LoginStrategy
.
Для создания объекта стратегии используется фабрика LoginStrategyFactory
.
Методы фабрики принимают реквизиты авторизации, приложение и форму (фрейм), открываемые при успешной авторизации на сервере приложений.
import ru.bitec.gs.automation.client.login.LoginStrategy;
import ru.bitec.gs.automation.client.login.LoginStrategyFactory;
LoginStrategy loginStrategy = LoginStrategyFactory.urlCredentials(userCredential, "gtk-Gs3_QAApplication", "gtk-ru.bitec.app.btk.Btk_Notification#Head");
В примере стратегия определяется объектом авторизации (userCredential
),
приложением (gtk-Gs3_QAApplication
) и главной формой (Btk_Notification#Head
).
Создание экземпляра клиента¶
Экземпляр клиента создаётся с помощью строителя ClientBuilder
.
При создании экземпляра клиента необходимо указать Web-драйвер, адрес сервера приложений, стратегии подключения для пользователя и для администратора.
import ru.bitec.gs.automation.client.Client;
import ru.bitec.gs.automation.client.ClientBuilder;
Client client = ClientBuilder.forWebDriver(driver).setUrl("http://localhost:8080").setLoginStrategy(loginStrategy).setAdminCredentials(adminCredential).build();
Объект клиента (client
) используется для последующих операций
подключения и отключения от сервера приложений.
Подключение к серверу приложений¶
Метод Client#login()
выполняет подключение к серверу приложений.
Метод выполнит последовательность действий:
Запуск браузера.
Перенаправление браузера на указанный адрес сервера приложений.
Авторизация пользователя на сервере приложений.
Открытие требуемого приложения и выбранной формы.
Проверка успешности выполненных действий.
Возвращение объекта приложения (
Application
).
import ru.bitec.gs.automation.client.ui.Application;
Application application = client.login();
Объект приложения
(application
)
используется для дальнейшего взаимодействия с интерфейсом.
See also
Руководство пользователя: Объект приложения
Отключение от сервера приложений¶
Метод Client#logout()
отключает клиента от сервера приложений.
Метод выполнит:
Закрытие открытого приложения.
Завершение пользовательской сессии на сервере приложений.
Закрытие используемого браузера.
client.logout();
Полный текст программы¶
package ru.bitec.gsautomation.examples.example1;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
import ru.bitec.gs.automation.client.Client;
import ru.bitec.gs.automation.client.ClientBuilder;
import ru.bitec.gs.automation.client.login.LoginStrategy;
import ru.bitec.gs.automation.client.login.LoginStrategyFactory;
import ru.bitec.gs.automation.client.ui.Application;
import ru.bitec.gs.automation.security.CredentialsFactory;
import ru.bitec.gs.automation.security.UserPassword;
import ru.bitec.gs.automation.security.UserPasswordSolution;
public class ClientTest {
public static void main(String[] args) throws Exception {
UserPasswordSolution userCredential = CredentialsFactory.userPasswordSolution("admin", "admin", "PGTEST");
UserPassword adminCredential = CredentialsFactory.userPassword("admin", "admin");
LoginStrategy loginStrategy = LoginStrategyFactory.urlCredentials(userCredential, "gtk-Gs3_QAApplication", "gtk-ru.bitec.app.btk.Btk_Notification#Head");
RemoteWebDriver remoteWebDriver = new ChromeDriver();
try (Client client = ClientBuilder.forWebDriver(remoteWebDriver).setUrl("http://localhost:8080").setLoginStrategy(loginStrategy).setAdminCredentials(adminCredential).build()) {
Application application = client.login();
try {
application.mainForm().mainMenu().itemByCaption("gs-automation", "Редакторы на карточке").click();
} finally {
client.logout();
}
}
}
}
Полный пример проекта example1
доступен в коллекции примеров проектов.
Использование DefaultTestEnvironment¶
Дополнительный компонент gs-automation-environments предоставляет класс
DefaultTestEnvironment
,
упрощающий процессы подключения и отключения.
package ru.bitec.gsautomation.examples.example4;
import ru.bitec.gs.automation.environment.DefaultTestEnvironment;
public class ClientTest extends DefaultTestEnvironment {
private ClientTest() {
super();
}
public void loginAndOpenCloseApplication_noExceptions() throws Exception {
testClassPrelude();
application.mainForm().mainMenu().itemByCaption("gs-automation", "Редакторы на карточке").click();
testClassEpilogue();
}
public static void main(String[] args) {
ClientTest test = new ClientTest();
try {
test.loginAndOpenCloseApplication_noExceptions();
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}
Методы testClassPrelude()
и testClassEpilogue()
выполняют необходимые операции подключения и отключения от сервера приложений.
Параметры подключения настраиваются в файле свойств (gs-automation.properties
),
расположенном в директории запуска приложения.
Полный пример проекта example4
доступен в коллекции примеров проектов.
See also
Спецификация: Параметры окружения
Спецификация: Репозиторий библиотеки
API:
ru.bitec.gs.automation.environment.DefaultTestEnvironment
API окружения выполнения: GS-AUTOMATION-ENVIRONMENTS 1.1.1 JavaDoc
Руководство пользователя: Состав библиотеки
Руководство пользователя: Параметры окружения выполнения