c# - 错误 CS7036 没有给出与“SpecflowBaseTest.SpecflowBaseTest(IWebDriver)”所需的形式参数“驱动程序”相对应的参数
问题描述
我正在创建一个新框架,因为 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
我的框架的完整代码片段如下。我正在尝试依赖注入,因为 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.
}
}
}
解决方案
在你的LoginSteps
课堂上,你写过:
public LoginSteps(LoginPage loginpage, IWebDriver driver)
{
//Driver = driver;
this.LoginPage = loginpage;
}
构造函数没有调用SpecflowBaseTest
具有单个参数的基类 ( ) 构造函数,并且基类也没有默认构造函数。因此出现这个错误。
为了解决这个问题,您需要在LoginSteps
构造函数中使用base
关键字调用基类构造函数。像这样的东西:
public LoginSteps(LoginPage loginpage, IWebDriver driver) : base(driver)
{
//Driver = driver;
this.LoginPage = loginpage;
}
或者
您需要在基类中创建一个默认构造函数。像这样的东西:
public SpecflowBaseTest()
{
}
推荐阅读
- php - 有什么方法可以使用 PHp Strom 忽略“缺少文件文档注释”Yii2?
- sql - Sql to linq 按大小写条件转换
- strace - Gammu 在 strace 下运行时有不同的行为
- raster - 如何在 DEM-Raster 中添加涵洞?
- sql-server - 使用 Windows 身份验证连接到 SQL Server 时选择不同的用户
- php - SELECT(MAX) SQL 到没有原始的 Eloquent
- html - 如何用子元素覆盖设置了“边框和溢出隐藏”的元素的边框
- mongodb - 我正在努力用 mongo 编写这个简单的 SQL 查询
- hive - Hive CLI 在启动时出现问题
- vb.net - 在不使用 SQL 的情况下使用文本框过滤多个 Datagridview