Как использовать один параметр для всех страниц и протестировать с использованием шаблона объектной модели страницы (Webdriver + Java + JUnit)? - PullRequest
0 голосов
/ 07 мая 2018

На всех страницах и тестах я указываю переменную String domain = "https: // ...", и иногда мне нужны одни и те же тесты для запуска на разных доменах. Можно ли указать переменную с доменом один раз для всех тестов и страниц (чтобы при изменении значения переменной все тесты выполнялись в другом домене)?

public class test {
    public static WebDriver driver;
    public static pageLogin login;
    public static pageMain main;
    
    String domain = "http://testdomain.com";
    
    @BeforeClass
...

1 Ответ

0 голосов
/ 07 мая 2018

Я всегда делаю, скажем, суперэкранный объект экранной страницы, где я храню свой экземпляр драйвера и глобальные переменные, как в примере ниже:

public class Screen {
    private String currentScreen = "Page";
    private boolean isLoaded = false;
    private MobileDriver driver;

    public Screen(MobileDriver mobileDriver) {
        this.driver = mobileDriver;
    }

public String getCurrentScreen() {
    return name;
}

public void setCurrentScreen(String name) {
    this.name = name;
}


public boolean isLoaded() {
    return isLoaded;
}

public void setLoaded(boolean loaded) {
    isLoaded = loaded;
}

, поэтому я расширяю все остальные классы объектов страницы, предоставляя драйвер и все необходимые глобальные переменные с помощью getter / setter

так вот как будет выглядеть дочерний класс объекта страницы

public class OnBoardingScreen extends Screen{
    @AndroidFindBy(id = "onboarding_content")
    @WithTimeout(time = 1, unit = TimeUnit.SECONDS)
    private MobileElement labelContent;

    @AndroidFindBy(id = "onboarding_skip_intro")
    @WithTimeout(time = 1, unit = TimeUnit.SECONDS)
    private MobileElement buttonSkipIntro;


    public OnBoardingScreen(MobileDriver driver) {
        super(driver);
        PageFactory.initElements(new AppiumFieldDecorator(driver, 2, TimeUnit.SECONDS), this);

        WaitUtils.isElementPresent(driver, buttonSkipIntro, 1);

        if (!Util.areElementsLoaded(labelTitle, labelContent, buttonSkipIntro)) {
            super.setLoaded(false);
        } else {
            super.setLoaded(true);
        }

так что вы, безусловно, можете сделать такой дизайн для ваших тестов, добавив переменную домена в этот суперкласс.

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