Использование в приложении

При использовании библиотеки в самостоятельном приложении необходимо выполнить:

  1. Подключение клиента (Client) к серверу приложений и получение экземпляра приложения Application.

  2. Выполнение основной логики вашей программы с использованием полученного экземпляра приложения.

  3. Отключение клиента от сервера приложений.

Подключение клиента к серверу приложений

Создание экземпляра Web-драйвера

Web-драйвер — это компонент библиотеки Selenium, осуществляющий взаимодействие с браузером.

Для каждого браузера (например, Chrome, Firefox) существует отдельная реализация Web-драйвера.

Пример создания экземпляра Web-драйвера для браузера Chrome.
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() выполняет подключение к серверу приложений.

Метод выполнит последовательность действий:

  1. Запуск браузера.

  2. Перенаправление браузера на указанный адрес сервера приложений.

  3. Авторизация пользователя на сервере приложений.

  4. Открытие требуемого приложения и выбранной формы.

  5. Проверка успешности выполненных действий.

  6. Возвращение объекта приложения (Application).

Подключение к серверу приложений.
import ru.bitec.gs.automation.client.ui.Application;

Application application = client.login();

Объект приложения (application) используется для дальнейшего взаимодействия с интерфейсом.

See also

Отключение от сервера приложений

Метод Client#logout() отключает клиента от сервера приложений.

Метод выполнит:

  1. Закрытие открытого приложения.

  2. Завершение пользовательской сессии на сервере приложений.

  3. Закрытие используемого браузера.

Отключение от сервера приложений.
client.logout();

Полный текст программы

ClientTest.java
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, упрощающий процессы подключения и отключения.

ClientTest.java
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