依赖注入 Selenium WebDriver 与 Spring



是否可以使用 Spring 注入 WebDriver?我读过它不能是单例,通常应该在@Before块期间实例化。我可以在这一点上创建它,但我希望它"神奇地"提供给一些"帮助程序"类,而不是手动将引用传递给它们。

更新

我让它在本地工作正常,使用一次测试

@DirtiesContext( classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)

但是一旦我把它放在我们运行并发测试和事情的服务器上,我就遇到了这个错误。

当该工厂的单例正在破坏时,不允许创建单例豆。

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

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

出错

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

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

然后在您的班级中:

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

请参阅此链接以获取更多信息

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

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

相关内容

  • 没有找到相关文章

最新更新