Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在步骤';如果我输入密码详细信息';c#规范流_C#_Specflow - Fatal编程技术网

为什么在步骤';如果我输入密码详细信息';c#规范流

为什么在步骤';如果我输入密码详细信息';c#规范流,c#,specflow,C#,Specflow,在VS 2019中使用c#的specflow新功能。已经实现了我的步骤并生成了一个步骤定义文件,如下所示。我真的不能动脑,什么时候,然后。我发现的大多数登录页面的常见示例是,您通常会得到一个需要用户名和密码的登录页面。然而,在我的例子中,它们位于两个单独的页面上,即首先使用用户名登录,然后作为第二个页面通过密码登录。出于某种原因,我认为这就是困惑所在,因为我不明白应该在代码中放置2-3条给定语句的位置,因此出现错误,只能访问sendkeys()到username,而无法单击login按钮 错误:

在VS 2019中使用c#的specflow新功能。已经实现了我的步骤并生成了一个步骤定义文件,如下所示。我真的不能动脑,什么时候,然后。我发现的大多数登录页面的常见示例是,您通常会得到一个需要用户名和密码的登录页面。然而,在我的例子中,它们位于两个单独的页面上,即首先使用用户名登录,然后作为第二个页面通过密码登录。出于某种原因,我认为这就是困惑所在,因为我不明白应该在代码中放置2-3条给定语句的位置,因此出现错误,只能访问sendkeys()到username,而无法单击login按钮

错误:步骤“给定我输入密码详细信息”的步骤定义不明确

无法执行此步骤,因为我的步骤不正确

[Binding]
    public sealed class HomeSteps
    {
        LoginPage loginPage = null;

        [Given(@"I launch the application")]
        public void GivenILaunchTheApplication()
        {
            IWebDriver webDriver = new ChromeDriver(@"C:\Users\Peter\Desktop\chromedriver_win32");
            webDriver.Navigate().GoToUrl("https://mycompany.com/app/auth/login");
            loginPage = new LoginPage(webDriver);
        }


        [Given(@"I enter the username details")]
        public void GivenIEnterTheUserNameDetails(Table table)
        {
            dynamic data = table.CreateDynamicInstance();
            loginPage.enterUsername((string)data.username);
            
        }
        [When(@"I click the login button")]
        public void AndIClickTheLogin()
        {
            loginPage.ClickLoginButton();
        }
        [Then(@"I should see the login link")]
        public void ThenIShouldSeeTheLoghinLink()
        {
            Assert.That(loginPage.IsMicrosoftPageExist(), Is.True);
        }

        [Given(@"I enter the password details")]
        public void AndIEnterThePaswordDetails(Table table)
        {
            dynamic data = table.CreateDynamicInstance();
            loginPage.enterPassword((string)data.password);
        }

        [When(@"I click the sign in button")]
        public void WhenIClickTheSignInButton()
        {
            loginPage.ClickSignInButton();
        }

        [Then(@"I should see the login link")]
        public void ThenIShouldSeeTheLoghinLink1()
        {
            Assert.That(loginPage.IsCompanyPageExist(),Is.True);
        }
    }
请帮忙

情况是:

Scenario: Perform login to EA web site
    Given I launch the application
    And I enter the username details
    | username |
    | amyemail@email.com |
    When I click the login button
    When I shoukld see the microsoft logo
    When I enter the password details
    | password |
    | ...      |
    When I click the sign in button
    Then I should see the company page

错误消息说明了这一切:

为步骤“给定我输入密码详细信息”找到不明确的步骤定义

SpecFlow不支持同一步骤的多个步骤定义。无论有多少步骤定义类,步骤定义文件中只能出现一次
[给定(@“我输入密码详细信息”)]


在步骤定义类中查找此定义存在的其他位置。选择一个,删除所有其他属性。

您是否忘记在类名上方复制并粘贴
[Binding]
属性?如果缺少该属性,则SpecFlow将无法识别其中的步骤。抱歉,没有复制,所以是的,我已绑定扫描您添加全部或部分场景?您是说我可以使用给定的场景,何时,何时,何时,何时,Wgen,然后?这对我来说毫无意义?这就像我在反对我们实际发生的事情,而不是Specflows规则。@MrRabbit:这与您的场景和功能文件无关。这与包含步骤定义的C#类有关。在步骤定义(C#类)中,以及在所有C#类的组合中,不能多次定义步骤。不能在每个类中多次定义同一步骤,也不能在所有C#步骤定义类中多次定义同一步骤。