C# 参数1无法从类转换为IWebDriver

C# 参数1无法从类转换为IWebDriver,c#,selenium,selenium-webdriver,specflow,C#,Selenium,Selenium Webdriver,Specflow,我试图在容器中注册IWebDriver实例,我传递给它的参数显示错误。错误为参数1:无法从OlympusiFramework.DriverManagement.BrowserSetup转换为OpenQA.Selenium.IWebDriver 错误显示的行在这里 container.RegisterInstancesBrowserSetup 浏览器设置以红色下划线显示 在BrowserSetUp类中,我正在从配置文件读取浏览器值。值为chrome。我有一个If语句,如果值是chrome,则实例化

我试图在容器中注册IWebDriver实例,我传递给它的参数显示错误。错误为参数1:无法从OlympusiFramework.DriverManagement.BrowserSetup转换为OpenQA.Selenium.IWebDriver

错误显示的行在这里 container.RegisterInstancesBrowserSetup

浏览器设置以红色下划线显示

在BrowserSetUp类中,我正在从配置文件读取浏览器值。值为chrome。我有一个If语句,如果值是chrome,则实例化chrome驱动程序,并返回驱动程序 我想把这个驱动程序作为一个参数传递到这里

container.RegisterInstanceAs<IWebDriver>(BrowserSetUp);
类SpecFlowHooks

using System.Text;
using TechTalk.SpecFlow;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using Olympus.Page;
using OpenQA.Selenium.Remote;
using BoDi;
using OlympusUIFramework.DriverManagement;

namespace Olympus
{
[Binding]
public class SpecFlowHooks
{
    private readonly IObjectContainer container;


    public SpecFlowHooks(IObjectContainer container)
    {
        this.container = container;
    }

    [BeforeScenario]
    public void CreateWebDriver()
    {
        // Create and configure a concrete instance of IWebDriver
        //IWebDriver driver = new ChromeDriver(@"D:\\selenium 
browsers\\");
        //{

        //};
        BrowserSetup BrowserSetUp = new BrowserSetup();
        // Make this instance available to all other step definitions
        //container.RegisterInstanceAs(driver);
        //container.RegisterInstanceAs<IWebDriver>(driver);
        container.RegisterInstanceAs<IWebDriver>(BrowserSetUp);
    }
}
}
配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <add key="browser" value="chrome"/>
</configuration>
将OlympusiFramework.DriverManagement.BrowserSetup的实例分配给一个变量、字段或参数,该变量、字段或参数只接受实现OpenQA.Selenium.IWebDriver的类的实例

BrowserSetup evidentally未实现该接口,因此不会发生基于该接口的隐式强制转换。编译器也未能在这两种类型之间找到任何其他隐式强制转换。所以现在你的工作就是解决这个问题

类BrowserSetup是包含IWebDriver引用的聚合组合。这与作为IWebDriver不同。您要么需要继承,要么在我不确定BrowserSetup为什么存在的地方指定driver的值

我觉得您需要一个使用静态InitiateBrowser函数作为工厂方法的静态类。 驾驶员参考绝对不应该公开。或者你想实现一个单例,或者它不应该出现在这里

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <add key="browser" value="chrome"/>
</configuration>