Как настроить URL-адрес удаленной сетки Selenide в тестовой среде Selenium-Jupiter?
Я пытаюсь настроить драйвер Selenide в рамках Selenium-Jupiter для использования моего URL-адреса удаленной сетки, но он продолжает игнорировать конфигурацию и просто запускает локальный установленный браузер. Вот как я пытаюсь его настроить. Есть идеи, что здесь может быть не так?
import com.codeborne.selenide.Configuration;
import com.codeborne.selenide.SelenideConfig;
import io.github.bonigarcia.seljup.SelenideConfiguration;
import static com.codeborne.selenide.Browsers.CHROME;
public abstract class ChromeTest extends BaseTest {
@SelenideConfiguration
SelenideConfig selenideConfig = new SelenideConfig();
private String getSeleniumRemote() {
System.getProperty("selenide.remote", "");
}
public ChromeTest() {
if (getSelenideRemote().isEmpty()) {
selenideConfig.proxyEnabled(false)
.browser(CHROME).startMaximized(false)
.browserSize("800x1200").browserPosition("50x60");
} else {
Configuration.timeout = 6000;
Configuration.remote = getSelenideRemote();
selenideConfig.proxyEnabled(false)
.startMaximized(true).browser(CHROME);
}
}
}
Я знаю, что обычный RemoteWebDriver работает, и я могу заставить его работать, но я надеюсь использовать Selenide в приведенном выше примере:
Пример:
@Test
void testWithRemoteSelenide(@DriverUrl("http://127.1:4444/wd/hub")
@DriverCapabilities("browserName=" + CHROME) SelenideDriver driver)
Я могу заставить его работать с аннотацией, но проблема в том, что мне нужно, чтобы эта аннотация зависела от передачи параметра в тесты. Я хочу иметь возможность легко переключаться, используя сетку или локально. Спасибо за вашу помощь.
1 ответ
Хорошо, спустя почти 48 часов без ответа, я наконец нашел решение. Вот:
//build.gradle
test {
useJUnitPlatform()
ignoreFailures = false
beforeTest { descriptor ->
logger.lifecycle("Running test: $descriptor.className")
}
systemProperty "env", System.getProperty("env")
def remote = System.getProperty("selenide.remote", "")
if (!remote.isEmpty()) {
systemProperty("selenide.remote", remote)
}
}
Затем в моем тестовом базовом классе:
public abstract class ChromeTest extends BaseTest {
@SelenideConfiguration
SelenideConfig selenideConfig = new SelenideConfig();
/**
* This config is equivilant to the documented method:
* Example: test(@DriverUrl("http://127.1:4444/wd/hub")
* @DriverCapabilities("browserName=chrome") SelenideDriver sd)
*/
public ChromeFormTest() {
if (getSelenideRemote().isEmpty()) {
selenideConfig.proxyEnabled(false).proxyHost("http://proxy.domain.com")
.proxyPort(8080)
.browser(CHROME).startMaximized(false)
.browserSize("800x1200").browserPosition("50x60");
} else {
Configuration.timeout = 6000;
Configuration.remote = getSelenideRemote();
selenideConfig.proxyEnabled(false).proxyHost("http://proxy.domain.com")
.proxyPort(8080)
.startMaximized(false).browser(CHROME);
}
}
}
Затем, когда я выполняю, это выглядит так:
gradle clean test -Denv=sys -Dselenide.remote=http://127.1:4444/wd/hub
--info --tests com.qa.suite.*
И конструктор каждого теста выглядит так:
@Test
public void testWhatever(SelenideDriver sd) {