gpt4 book ai didi

c# - 错误 CS7036 没有给定的参数对应于 'driver' 的所需形式参数 'SpecflowBaseTest.SpecflowBaseTest(IWebDriver)'

转载 作者:行者123 更新时间:2023-12-02 16:55:49 25 4
gpt4 key购买 nike

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

Error CS7036 There is no argument given that corresponds to the required 
formal parameter 'driver' of
'SpecflowBaseTest.SpecflowBaseTest(IWebDriver)' UnitTestProject1
D:\Selenium
Projects\Olympus\UnitTestProject1\UnitTestProject1\Steps\LoginSteps.cs 14
Active

我的框架的完整代码片段如下。我正在尝试依赖项注入(inject),因为 PageFactory 已被弃用,不再使用。

我不确定如何解决这个错误。一些帮助表示赞赏。谢谢

基类

using System;
using System.Collections.Generic;
using System.Linq;
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
{
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);
}
}
}

SpecflowHooks类

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

namespace UnitTestProject1
{
public class SpecFlowHooks
{
private readonly IObjectContainer container;

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

[BeforeStep]
public void CreateWebDriver()
{
// Create and configure a concrete instance of IWebDriver
IWebDriver driver = new ChromeDriver();
{

};

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

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

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

登录页面类

using System;
using System.Collections.Generic;
using System.Text;
using OpenQA.Selenium;
using SeleniumExtras.PageObjects;
using NUnit.Compatibility;
using Shouldly;
using OpenQA.Selenium.Remote;

namespace UnitTestProject1.Page
{
public class LoginPage : SpecflowBaseTest
{
public LoginPage(IWebDriver browser) : base(browser)

{
//Driver = browser;
}

public void Login(string Username, string Password)
{
UsernameField.SendKeys(Username);
PasswordField.SendKeys(Password);
LoginButton.Click();
}

public void CheckUserIsLoggedIn(string Username)
{
AccountUsername.Displayed.ShouldBe(true, Username);
}

[FindsBy(How = How.CssSelector, Using = "#LoginUsername")]
private IWebElement UsernameField { get; set; }

[FindsBy(How = How.CssSelector, Using = "#LoginPassword")]
private IWebElement PasswordField { get; set; }

[FindsBy(How = How.CssSelector, Using = "#login-submit-button")]
private IWebElement LoginButton { get; set; }

[FindsBy(How = How.CssSelector, Using = "#div.accountUsrename")]
private IWebElement AccountUsername { get; set; }

}
}

步骤文件

using NUnit.Framework;
using System;
using TechTalk.SpecFlow;
using UnitTestProject1.Page;
using OpenQA.Selenium;

namespace UnitTestProject1.Steps
{
[Binding, Parallelizable]
public class LoginSteps : SpecflowBaseTest
{
protected LoginPage LoginPage;

public LoginSteps(LoginPage loginpage, IWebDriver driver)
{
//Driver = driver;
this.LoginPage = loginpage;
}

[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.
}
}
}

最佳答案

在这里,您真正应该做三件事。

  1. 从 SpecflowBaseTest 中删除 LoginPage 属性
  2. 从LoginSteps调用基类构造器
  3. LoginPage 属性和初始化代码移动到 LoginSteps 中:
[Binding]
public class LoginSteps : SpecflowBaseTest
{
private LoginPage LoginPage { get; }

public LoginSteps(IWebDriver driver) : base(driver)
{
LoginPage = new LoginPage(driver);
}
}

关于c# - 错误 CS7036 没有给定的参数对应于 'driver' 的所需形式参数 'SpecflowBaseTest.SpecflowBaseTest(IWebDriver)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56490851/

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