为什么我会为步骤 'Given I enter the password details' 找到不明确的步骤定义 c# specflow

Why do I get Ambiguous step definitions found for step 'Given I enter the password details' c# specflow

在 VS 2019 中使用 c# 的 specflow 的新手。已经实现了我的步骤并生成了一个步骤定义文件,如下所示。无法真正理解 Given, When, Then。我发现的大多数登录页面常见的示例是,您通常会得到一个需要用户名和密码的登录页面。但是,就我而言,它们位于两个单独的页面上,即首先使用用户名登录,然后作为第二页通过密码登录。出于某种原因,我认为这就是混乱所在,我不明白我应该在我的代码中放置 2-3 个给定语句的位置,因此出错并且只能将 sendkeys() 发送到用户名并且无法点击登录按钮。

Error: Ambiguous step definitions found for step 'Given I enter the password details'

我的步骤不正确,这一步无法执行。

[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

错误消息说明了一切:

Ambiguous step definitions found for step 'Given I enter the password details'

SpecFlow 不支持同一步骤的多个步骤定义。您只能在步骤定义文件中出现一次 [Given(@"I enter the password details")],无论您有多少步骤定义 类。

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