Как применить @Autowired к WebDriver?

162
02 февраля 2018, 21:57

Использую spring и selenium в одном проекте, и приходится оборачивать WebDriver вот таким некрасивым способом:

@Slf4j
@Component
public class Firefox {
    @Getter
    private WebDriver driver;
    public Firefox() {
        driver = new FirefoxDriver();
    }
}

И все время приходится пользоваться геттером, что не очень приятно. Как можно добится того чтобы можно было писать вместо

@Autowired
private Firefox firefox;

И потом вызывать firefox.getDriver()

Настроить spring так что бы можно было сразу писать:

@Autowired
private WebDriver webDriver;

С учетом конечно того, что в классе WebDriver аннотацию @Component не как не поставить, так как он библиотечный.

Сейчас конфиг выглядит так:

@Configuration
@PropertySource("application.properties")
@ComponentScan(basePackages = {"org.example"})
public class SpringBeansConfigurationInjector {
    @Scope("singleton")
    @Bean(name = "firefox")
    Firefox firefox() {
        return new Firefox();
    }
}
Answer 1

Перепишите конфиг так:

@Configuration
@PropertySource("application.properties")
@ComponentScan(basePackages = {"org.example"})
public class SpringBeansConfigurationInjector {
    @Bean
    WebDriver webDriver() {
        return new FirefoxDriver();
    }
}

Теперь вы можете в любом другом классе, управляемом Spring-ом внедрить WebDriver:

package org.example;
@Component
public class SomeClass {
    @Autowired
    private WebDriver webDriver;
}
READ ALSO
Симплекс метод реализация [требует правки]

Симплекс метод реализация [требует правки]

помогите пожалуйста с кодом очень нужно

169
Почему не отображаются “три точки” в Action Bar

Почему не отображаются “три точки” в Action Bar

Захотел в проекте android studio создать контекстное меню, написал следующее в классе MainActivity(Именно для этого активити нужно меню):

168
При сборке jar пропадают избражения

При сборке jar пропадают избражения

IDEA, Java, gui-приложениеИмпортировал в проект несколько картинок, отображаемых в приложении

153