首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Selenium-Jupiter测试框架中配置Selenide远程网格url?

如何在Selenium-Jupiter测试框架中配置Selenide远程网格url?
EN

Stack Overflow用户
提问于 2020-03-28 04:17:51
回答 1查看 441关注 0票数 0

我试图在Selenium-Jupiter框架中配置Selenide驱动程序,以使用我的远程网格url,但它一直忽略配置,只运行本地安装的浏览器。下面是我尝试配置它的方法。知道这里可能出了什么问题吗?

代码语言:javascript
复制
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:

示例:

代码语言:javascript
复制
@Test
void testWithRemoteSelenide(@DriverUrl("http://127.1:4444/wd/hub") 
  @DriverCapabilities("browserName=" + CHROME) SelenideDriver driver)

我可以让它与注释一起工作,但问题是,我需要该注释是以将参数传递给测试为条件的。我希望能够使用grid或local轻松切换。谢谢大家的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-30 02:21:27

好了,在几乎48小时没有回复之后,我终于找到了解决方案。这就是它:

代码语言:javascript
复制
//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)
    }
}

然后,在我的测试基类中:

代码语言:javascript
复制
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);
        }
    }
}

然后,当我执行时,它看起来是这样的:

代码语言:javascript
复制
gradle clean test -Denv=sys -Dselenide.remote=http://127.1:4444/wd/hub 
  --info --tests com.qa.suite.*

每个测试的构造函数如下所示:

代码语言:javascript
复制
@Test
public void testWhatever(SelenideDriver sd) {
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60893565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档