为什么我会为步骤 '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")]
,无论您有多少步骤定义 类。
查找步骤定义中的其他地方 类 此定义存在。选择一个,删除所有其他的。
在 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")]
,无论您有多少步骤定义 类。
查找步骤定义中的其他地方 类 此定义存在。选择一个,删除所有其他的。