gpt4 book ai didi

c# - BoDi.ObjectContainerException 接口(interface)无法解析 : OpenQA. Selenium.IWebDriver

转载 作者:太空宇宙 更新时间:2023-11-03 14:42:04 26 4
gpt4 key购买 nike

我正在创建一个新框架,因为 PageFactory 已被弃用。我收到错误

BoDi.ObjectContainerException : Interface cannot be resolved: OpenQA.Selenium.IWebDriver (resolution path: UnitTestProject1.Base)
TearDown : BoDi.ObjectContainerException : Interface cannot be resolved: OpenQA.Selenium.IWebDriver (resolution path: UnitTestProject1.Base)

我的框架代码片段如下。我不确定如何解决这个问题。我知道我可以使用上下文注入(inject),但不确定我应该从我的框架中移动哪些属性以及移动到哪里。我在想我是否应该将 IWedriver 驱动程序移动到一个类中并在构造函数中调用它,但不确定我应该在步骤文件中的什么地方调用它。

感谢一些解决此问题的帮助,谢谢。

using System;
using System.Collections.Generic;
using System.Text;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using SeleniumExtras.PageObjects;


namespace UnitTestProject1
{
public class Base : SpecflowBaseTest
{
protected IWebDriver driver { get; set; }

public Base(IWebDriver Driver)
{
driver = Driver;
//PageFactory.InitElements(Driver, this);
}
}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TechTalk.SpecFlow;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using UnitTestProject1.Page;
using OpenQA.Selenium.Remote;
using BoDi;

namespace UnitTestProject1
{
[Binding]
public class SpecflowBaseTest : TechTalk.SpecFlow.Steps
{
// For additional details on SpecFlow hooks see
http://go.specflow.org/doc-hooks
protected IWebDriver Driver { get; set; }
private readonly IObjectContainer objectContainer;

[BeforeScenario]
public void BeforeScenario()
{
Driver = new ChromeDriver();
//this.objectContainer = objectContainer;
//ObjectContainer.RegisterInstanceAs<IWebDriver>(Driver);
Driver.Manage().Window.Maximize();
}

[AfterScenario]
public void AfterScenario()
{
Driver.Close();
Driver.Quit();
}

public void NavigateToURL(string URL)
{
Driver.Navigate().GoToUrl(URL);
}

protected LoginPage LoginPage => new LoginPage(Driver);
}
}

using NUnit.Framework;
using System;
using TechTalk.SpecFlow;


namespace UnitTestProject1.Steps
{
[Binding, Parallelizable]

public class LoginSteps : SpecflowBaseTest
{
[Given(@"I navigate to (.*)")]
public void GivenINavigateToHttpsCompany_Com(string URL)
{
NavigateToURL(URL);
}

[Given(@"I enter bw_(.*) and (.*)")]
public void GivenIEnterBw_Valid_UserAnd(string Username, string
Password)
{
LoginPage.Login(Username, Password);
}

[Then(@"I am logged in as bw_valid_user")]
public void ThenIAmLoggedInAsBw_Valid_User()
{
//LoginPage.
}
}
}

最佳答案

您需要初始化一个新的 IWebDriver 对象,并在 [BeforeScenario] 中将其注册到 SpecFlow 的依赖注入(inject)框架。

[Binding]
public class SeleniumSpecFlowHooks
{
private readonly IObjectContainer container;

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

[BeforeScenario]
public void CreateWebDriver()
{
// Create and configure a concrete instance of IWebDriver
IWebDriver driver = new FirefoxDriver(...)
{
...
};

// Make this instance available to all other step definitions
container.RegisterInstance(driver);
}

[AfterScenario]
public void DestroyWebDriver()
{
IWebDriver driver = container.Resolve<IWebDriver>();

driver.Close();
driver.Dispose();
}
}

您的步骤定义类不应初始化网络驱动程序。只需在其构造函数中声明一个 IWebDriver 参数即可。

基类:

[Binding]
public class SpecflowBaseTest : TechTalk.SpecFlow.Steps
{
protected IWebDriver Driver { get; }
protected LoginPage LoginPage { get; }

public SpecflowBaseTest(IWebDriver driver)
{
Driver = driver;
LoginPage = new LoginPage(driver);
}

public void NavigateToURL(string URL)
{
Driver.Navigate().GoToUrl(URL);
}
}

子类:

[Binding, Parallelizable]
public class LoginSteps : SpecflowBaseTest
{
[Given(@"I navigate to (.*)")]
public void GivenINavigateToHttpsCompany_Com(string URL)
{
NavigateToURL(URL);
}

[Given(@"I enter bw_(.*) and (.*)")]
public void GivenIEnterBw_Valid_UserAnd(string Username, string Password)
{
LoginPage.Login(Username, Password);
}

[Then(@"I am logged in as bw_valid_user")]
public void ThenIAmLoggedInAsBw_Valid_User()
{
//LoginPage.
}
}

关于c# - BoDi.ObjectContainerException 接口(interface)无法解析 : OpenQA. Selenium.IWebDriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56329804/

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