如何在 Selenium-Jupiter 测试框架中配置 Selenide 远程网格 url?
How to configure Selenide remote grid url in Selenium-Jupiter test framework?
我正在尝试在 Selenium-Jupiter 框架内配置 Selenide 驱动程序,以使用我的远程网格 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)
我可以让它与注释一起工作,但问题是我需要该注释以将参数传递给测试为条件。我希望能够使用网格或本地轻松切换。感谢大家的帮助。
好的,在将近 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)
}
}
然后,在我的测试基地class:
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) {
我正在尝试在 Selenium-Jupiter 框架内配置 Selenide 驱动程序,以使用我的远程网格 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)
我可以让它与注释一起工作,但问题是我需要该注释以将参数传递给测试为条件。我希望能够使用网格或本地轻松切换。感谢大家的帮助。
好的,在将近 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)
}
}
然后,在我的测试基地class:
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) {