Как получить доступ к методам класса страницы без использования initElements () или нового оператора из классов testng? - PullRequest
0 голосов
/ 27 января 2019

Я хочу создать экземпляры классов моей страницы для доступа к методам из классов testng без использования PageFactory.initElements () или нового оператора.Я хочу, чтобы мой тестовый код выглядел чистым и аккуратным.

В настоящее время я использую метод PageFactory.initElements () для инициализации моих классов страниц для каждого класса во всех классах testng, что приводит к тому, что код не читается и не очищается.

HomePage homePage = PageFactory.initElements (driver, HomePage.class);

Есть ли какие-либо аннотации для автоматического добавления классов страниц?

1 Ответ

0 голосов
/ 28 января 2019

Шаг 1 - создание статического класса драйвера

public sealed class Driver
{
    [ThreadStatic]
    private static IWebDriver driver = null;


    public static IWebDriver Instance
    {
        get
        {
            if (driver == null)
            {
                driver = new ChromeDriver();
            }
            return driver;
        }
    }

    public static void Testcleanup()
    {           
        driver.Quit();
        driver = null;

    }
}

Шаг 2 - Создание базового класса, в котором объекты страницы будут инициализированы

public class TestBase
{
    private LoginPage loginPage;
    private HomePage homePage;

    public TestBase()
    {
        loginPage = new LoginPage();
        homepage = new HomePage();            
        PageFactory.InitElements(Driver.Instance, loginPage);
        PageFactory.InitElements(Driver.Instance, homePage);
    }

    public static LoginPage Login
    {
        get { return Instance.loginPage; }
    }


    public static HomePage Home
    {
        get { return Instance.homePage; }
    }

    private static TestBase Instance
    {
        get
        {
            return new TestBase();
        }
    }
}

Шаг 3: Наконец, используйте базовый класс в тестовом классе

   [TestClass]
public class PageInitTest : TestBase
{
    [TestMethod]
    public void PageInit()
    {

        Driver.Instance.Navigate().GoToUrl("url");
        Login.Email.SendKeys("Demo@gmail.com");  
    }     

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...