-1

I am trying to create a selenium framework using spring boot. What I am trying to accomplish it spring-boot should manage selenium driver creation, even when we run the test in parallel and if possible I want to avoid passing driver object in page class constructor. So I created a bean class like below

@Bean
public WebDriver getDriver(){
            return new ChromeDriver();
}

it worked fine for the Single test. But for multiple tests in parallel, I changed the scope of the above method to the prototype, and when I ran the test it started multiple tests but it didn't work as I expected and commands started firing in the wrong browser. I know I am missing something related to Thread/parallel stuff. It would be really helpful if someone can guide me or someone can share git repo where spring-boot and selenium are used.

Deepu Nair
  • 165
  • 5
  • 15

1 Answers1

0

You could try changing the scope to thread with:

@Bean
@Scope(value = "thread", proxyMode = ScopedProxyMode.TARGET_CLASS)
public WebDriver getDriver(){
            return new ChromeDriver();
}

@Bean
public static CustomScopeConfigurer customScopeConfigurer()
{
    CustomScopeConfigurer scopeConfigurer = new CustomScopeConfigurer();
    Map<String, Object> scopes = new HashMap<>();
    scopes.put("thread", SimpleThreadScope.class);
    scopeConfigurer.setScopes(scopes);
    return scopeConfigurer;
}
Jusbat
  • 40
  • 5
  • Can you throw some light on how you want to quit driver? As custom scope doesnt support destroyMethod was wondering how to achieve it! – Dileep17 Jan 19 '21 at 04:26