selenium-webdriver - 如何根据环境使用不同的网络驱动程序

标签 selenium-webdriver selenium-grid junit5 junit-jupiter selenium-jupiter

我使用 Selenium 木星。我从这样的方法参数中获取网络驱动程序:

@Test
public void testWithChrome(ChromeDriver chromeDriver) {
          chromeDriver.get("someUrlHere");
}

现在我想在网格上运行测试,所以我需要根据环境使用 webdriver。例如,当在我的 PC 上开发测试时,我想使用(本地)ChromeDriver,但是当使用 Jenkins 在网格上运行测试时,我想使用 RemoteDriver。 所以我需要这样的东西:(当 env = 0 时给我本地 Chrome 或当 env = 1 时给我远程 Chrome 但它不起作用)

int env = 0;

@Test
public void testWithChrome(
   (env == 0 ? ChromeDriver driver : RemoteDriver driver)) {
          driver.get("someUrlHere");
}

最佳答案

简而言之:以编程方式配置 Selenium 扩展时,您可以通过如下配置 URL 来强制使用 Selenium 网格(使用 JUnit 5 注释):

abstract class UiTest {

    @RegisterExtension
    static SeleniumExtension seleniumExtension = new SeleniumExtension();     

    @BeforeAll
    static void setUpOnce() {

        boolean isRunningInCiEnvironment = ...

        if( isRunningInCiEnvironment ) {

           // this will force Selenium Jupiter to use a RemoteWebDriver
           seleniumExtension.getConfig().setSeleniumServerUrl("http://...");

        }

        // without above condition, a FirefoxDriver will be used locally
        seleniumExtension.addBrowsers(BrowserBuilder.firefox().build(););

   }       
}


class MyTest extends UiTest {

    // Use WebDriver interface in test method: concrete browser detected
    // at execution time (via @BeforeAll, inherited from parent class)
    @Test
    void my_test_Case(WebDriver webDriver) {

       webDriver.get(...)
       Assert.(...)        
    }
}

长度问题is decribed here .

关于selenium-webdriver - 如何根据环境使用不同的网络驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50857858/

相关文章:

junit5 - 如何更改 JUnit5 中的测试执行顺序?

testing - selenium webdriver中frame没有id时如何识别并切换到frame

eclipse - 如何将selenium javadoc绑定(bind)到eclipse

java - Selenium 非常相似的xpaths?

javascript - 我可以使用 selenium-webdriver 一次(同时)运行多个实例吗?

java - CentOS 5.5下SeleniumGrid的init.d脚本

selenium - 如何更改 selenium/hub docker 容器的端口?

selenium - Chef Selenium : Strange error when I go to the hub ip:4444/wd/hub

java - Testcontainers - 在实例化期间不要自动启动容器

java - 如何使 Spring 的 @Autowired 在 JUnit 5 扩展中工作?