错误 CS7036 没有给出与“SpecflowBaseTest.SpecflowBaseTest(IWebDriver)”所需的形式参数“driver”相对应的参数

2024-04-05

我正在创建一个新框架,因为 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);
    }
}
} 

Specflow Hook 类

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. Remove LoginPage来自 SpecflowBaseTest 的属性
  2. 从 LoginSteps 调用基类构造函数
  3. 移动LoginPage属性和初始化代码放入 LoginSteps 中:
[Binding]
public class LoginSteps : SpecflowBaseTest
{
    private LoginPage LoginPage { get; }

    public LoginSteps(IWebDriver driver) : base(driver)
    {
        LoginPage = new LoginPage(driver);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误 CS7036 没有给出与“SpecflowBaseTest.SpecflowBaseTest(IWebDriver)”所需的形式参数“driver”相对应的参数 的相关文章

随机推荐

  • 终端中的 LESS css 编译器帮助

    我使用 Ubuntu 13 04 Linux 我已经安装了node和npm 使用 npm 我通过终端下载的内容更少 我在我的简单 HTML CSS 项目中使用了它 纯前端 它不是 Ruby 或 Nodejs 项目 当我这样做时 lessc
  • Prolog 追加与剪切运算符

    当我们使用append和cut操作符时会出现什么问题 append2 L L append2 H T L H TL append2 T L TL 我尝试了几种不同的输入 但总是成功 append2 1 2 5 L L 1 2 5 appen
  • XPath 中字符串的连接函数

    我正在尝试使用 XPath 获取完整的地址 我是 XPath 新手 这是我到目前为止所做的 p class adr span class street address 2222 Warnar Ave span span class coun
  • FacebookDisplayName 有何用途?

    我们目前正在更改使用 Facebook SDK 进行登录的应用程序的名称 实际上没有其他任何操作 这意味着对于未更新的用户 Facebook 应用程序的名称将与FacebookDisplayName 在我的测试过程中 我找不到对价值的任何影
  • 将 Access-Control-Allow-Origin 添加到 PHP 标头

    我正在尝试解决 WebGL 应用程序上的 CORS 限制 我有一个可以解析 URL 并返回图像的 Web 服务 由于此 Web 服务未启用 CORS 因此我无法使用返回的图像作为纹理 我本来打算 编写 PHP 脚本来处理图像请求 图像请求将
  • Java 中的树实现

    我得到了以下树 然后我们被告知使用last child previous sibling方法来改变这三个的实现 结果如下 我现在正在研究 Java 实现 以在这棵树上执行不同的功能 我们有一个 Tree 接口和一个 TreeNode 接口
  • 如何在java中查找自1970年以来的秒数

    我正在处理一个实时项目 其中我需要查找自 1970 年 1 月 1 日以来的秒数 我使用以下代码来查找秒数 但给出了错误的结果 代码如下 public long returnSeconds int year int month int da
  • 自定义Zuul异常

    我在 Zuul 中有一个场景 其中 URL 路由的服务也可能已关闭 因此 响应正文会在 JSON 正文响应中抛出 500 HTTP Status 和 ZuulException timestamp 1459973637928 status
  • Node webpack 开发服务器在 vuejs 项目中失败“无法获取/”

    当我通过 webpack 运行节点开发服务器时 我的浏览器上收到一条非常无用的消息 Cannot GET 我正在使用以下内容构建 Vuejs 应用程序 Vue Js 的结构是由这个决定的Vue模板 http vuejs templates
  • 相当于python3中的python2 chr(int)

    python2 print chr 174 python3 print chr 174 我正在寻找 python2 中 chr 的等效项 我相信这是由于 python 3 返回 unicode 字符而不是 ASCII 实际上 在Py3中ch
  • C 如何计算没有浮点精度的百分比(千)

    如何将 2 个 int 值的百分比计算为表示百分比的 int 值 更精确的是千分之一 背景 目的 使用没有 FPU 的处理器 浮点计算所需的时间要长 100 倍 int x 25 int y 75 int resultPercentage
  • Ionic APP 中的 Disqus

    我正在尝试在我的 ionic 应用程序中实现 disqus 评论 我知道我必须将其托管在其设置的域上 我相信我已正确配置该域 欢迎任何帮助 这是我的 app js 中离子应用程序的代码 scope showComments function
  • 为什么我可以使用 bot.get_user 函数获取一些用户,但不能获取其他用户? [不和谐.py]

    我当时正在忙着一天的事情并做学校作业 我去了我的不和谐服务器来检查一天中声誉和排行榜进度如何变化 当我使用该命令时 我收到错误 Nonetype object has no attribute display name 所以我很自然地转到运
  • 从另一个类访问静态成员函数

    我在 C 类中有一个静态 stl 映射 并且有另一个静态成员函数来返回指向映射中对象的常量指针 该映射对于该类中的所有对象都是通用的 唯一的问题是 我需要搜索这个映射并从另一个类 位于不同的 cpp h 文件中 设置它 当我尝试在 vs20
  • 是否有一种无点方法将条件检查转换为输入的 Maybe 类型?

    我只是在 haskell 中完成一些简单的练习 想知道是否有一种无点的方法将 if then else 语句转换为Maybe type Nothing如果条件为假则返回 并且Just如果条件为真则输入 简而言之 给出一些 maybeIf a
  • 将我现有的富文本 UI 与 CKEditor API 结合使用

    我有一个现有的富文本 UI 我想将其与 CKEditor 一起使用 基本上 我希望 CKEditor 能够处理应用样式 格式 过滤和规范化插入内容的复杂部分 我现有的 UI 需要驱动交互并根据选择显示状态 即 选择粗体文本应反映在 UI 中
  • 如何在不使用 Github 的情况下使用 Git 在项目中进行协作?

    我是 Git 和 Github 的初学者 但仍然对它们感到困惑 据说我们在与其他人协作时可以不用Github而使用Git 然而 也有人说 Git 可以在本地计算机上运行 如果我们不使用 Github Git 只能在本地运行 我们如何进行协作
  • 比较字符串的瓶颈

    这是一个后续问题C 中的 Char 与 String Speed https stackoverflow com q 3989111 363829 我声明了以下变量 std vector
  • 在 BroadcastReceiver 扩展类中使用 getContentResolver

    我必须在扩展 BroadcastReceiver 的类中使用 getContentResolver 方法 并且我发现 getContentResolver 只能在扩展 Activity 的类中使用 我尝试在扩展活动的类中执行静态方法 但无法
  • 错误 CS7036 没有给出与“SpecflowBaseTest.SpecflowBaseTest(IWebDriver)”所需的形式参数“driver”相对应的参数

    我正在创建一个新框架 因为 PageFactory 已被弃用 我收到错误 Error CS7036 There is no argument given that corresponds to the required formal par