依赖注入Selenium WebDriver与Spring?

时间:2015-03-10 16:34:12

标签: java spring selenium spring-4 spring-junit

是否可以使用Spring注入WebDriver?我读过它不能成为单身人士,通常应该在@Before块期间实例化。我很高兴在那时被创造出来但是我想提供它并且#34;神奇地"某些帮助"类,而不是手动将引用传递给它们。

更新

我使用

进行一次测试,在本地工作正常
@DirtiesContext( classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)

但是只要我把它放在运行并发测试的服务器上,我遇到了这个错误。

  

当这个工厂的单身人士处于破坏状态时,不允许使用单身人士豆。

使用Prototype并不是一个好主意,因为我还想注入WebDriverBackedSelenium(需要驱动程序并最终创建2个实例),而在某些原型案例中,我遇到了这个问题

  

嵌套异常是org.openqa.selenium.WebDriverException:转发新会话时出错请求超时等待节点可用

2 个答案:

答案 0 :(得分:0)

是的,这是可能的,对我有用。 在上下文spring文件中包含以下内容:

<bean id="driver" class="org.openqa.selenium.firefox.FirefoxDriver"
destroy-method="quit">
</bean> 

然后在你的课堂上:

@Autowired
 private WebDriver adriver;
 public WebDriver getAdriver() {
    return adriver;
 } 

请参阅此link了解详情

答案 1 :(得分:0)

使用Spring模仿@Before逻辑的一种方法是将驱动程序bean范围设置为原型。这将为每个请求创建一个新的驱动程序实例。问题是,如果你想在将创建一个新的webdriver实例的辅助类上使用@Autowired

为了同时运行测试,我们实现了webdriver as threadlocal。这允许为测试用例重用驱动程序实例,一次是每个测试类的驱动程序实例。然后,可以在同一JVM和线程中运行的任何类中引用线程本地副本。