gpt4 book ai didi

c# - IWebDriver 的 Specflow 上下文注入(inject)失败

转载 作者:行者123 更新时间:2023-11-30 20:34:31 24 4
gpt4 key购买 nike

我们有一套使用 Specflow 和 Selenium WebDriver 运行的 UI 测试。一夜之间,这些突然停止工作,现在在每个场景上抛出以下错误:


BoDi.ObjectContainerException : Interface cannot be resolved: OpenQA.Selenium.IWebDriver (resolution path: Steps class)

我们在每个场景之前使用 Specflow 上下文注入(inject)来注册我们的网络驱动程序,然后在每个步骤类中使用它:

[Binding]
public class Base
{
private readonly IObjectContainer _objectContainer;
private IWebDriver _webDriver;

public Base(IObjectContainer objectContainer)
{
_objectContainer = objectContainer;
}

[BeforeScenario]
public void Setup()
{
_webDriver = new ChromeDriver();
_objectContainer.RegisterInstanceAs<IWebDriver>(_webDriver);
}

....
}

步骤文件:

[Binding]
public class ProductSteps : TechTalk.SpecFlow.Steps
{
private readonly IWebDriver _driver;

public ProductSteps(IWebDriver driver)
{
_driver = driver;
}
}

在线查看 Specflow 文档,我看不出有什么问题 - 而且我也找不到任何其他人曾经遇到过此问题的信息!

我花了相当多的时间试图弄清楚这个问题的真相,但没有任何运气。

我们使用 NUnit 作为测试运行程序,并通过 nuget 获取所有最新更新。

最佳答案

我的猜测是,ProductSteps 类上有另一个 BeforeScenario Hook ,该 Hook 可能会更早运行,并强制在触发其他 BeforeScenatio 之前创建实例,因此 Web 驱动程序尚未注册。

你可以控制钩子(Hook)的执行顺序,可以使用属性的Order参数(参见http://www.specflow.org/documentation/Hooks/):[BeforeScenario(Order = 0)].

您也可以查看我的帖子http://gasparnagy.com/2016/08/specflow-tips-customizing-dependency-injection-with-autofac/使用 Autofac 提供了具有更复杂依赖关系的更强大的解决方案。

关于c# - IWebDriver 的 Specflow 上下文注入(inject)失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39118432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com