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
не принадлежит Селену, это принадлежит Проводнику.