Selenium Java - Как передать @Config на аутсорсинг и вызвать тесты из внешнего класса?

Уверен, на этот вопрос очень быстро может ответить опытный Java-разработчик. Но так как я не настолько знаком с Java, я не понимаю, как получить часть @Config в Selenium в Java. Было бы оптимальным, если бы у меня был конфигурационный файл или класс, в который я мог бы поместить данные (браузер, веб-сайт и т. Д.) С одной стороны, а с другой стороны - тестовые файлы.
Вот пример тестового файла:

package com.example_test.selenium;

import io.ddavison.conductor.Browser;
import io.ddavison.conductor.Config;
import io.ddavison.conductor.Locomotive;
import org.junit.Test;

@Config(
        browser = Browser.CHROME,
        url     = "http://example.com"
)

public class test_a_Home extends Locomotive {
    @Test
    public void testifExists() {
        validatePresent(site_a_Home.EL_NEWCUSTOMERBANNER);
    }
}

Теперь я хотел бы иметь отдельный файл с именем tests.java, где я могу вызвать функцию "test_a_Home". Если я попробую это только с

package com.example_test.selenium;

public class tests {
    test_a_Home test = new test_a_Home();

    test.testifExists();

}

Я получаю ошибку, что "testifExists()" не может быть решен.
Я пытался изменить public void testifExists() в public int testifExists() и попытался позвонить с int res = test.testifExists(); в class tests но это тоже не работает, так как я получаю сообщение об ошибке java.lang.Exception: Method testNewCustomersBannerExists() should be void,
Я был бы очень счастлив, если бы кто-нибудь мог мне помочь. Если вам нужна дополнительная информация, пожалуйста, не стесняйтесь упомянуть об этом. Спасибо.

1 ответ

Решение

Если вы хотите, чтобы ваш дизайн был таким, то вам нужно организовать свои тесты как таковые:

public class BasePage {
    public Locomotive test;
    public BasePage(Locomotive baseTest) {
        test = baseTest;
    }
}

public class test_a_Home extends BasePage {
    public test_a_Home(Locomotive baseTest) {
        super(baseTest);
    }

    public void testifExists() {
        test.validatePresent(site_a_Home.EL_NEWCUSTOMERBANNER);
    }
}

Тогда ваш тестовый класс, я бы также порекомендовал создать базовый класс:

@Config(
    browser = Browser.CHROME,
    url     = "http://example.com"
)
public class BaseTest extends Locomotive {}

И тогда ваш тестовый класс:

public class tests extends BaseTest {
    test_a_Home test = new test_a_Home(this);

    @Test
    public void testHomePage() {
        test.testIfExists();
    }
}

Также вы заявляете:

Я не понимаю, как получить часть @Config Selenium в Java.

Пожалуйста, убедитесь, что вы знаете, что использование Conductor абстрагирует вас от Selenium API. Он просто оборачивает его. @Config не принадлежит Селену, это принадлежит Проводнику.

Другие вопросы по тегам