Protractor 如何在多个文件上运行一个Cucumber(带量角器)方案?

Protractor 如何在多个文件上运行一个Cucumber(带量角器)方案?,protractor,cucumber,e2e-testing,cucumberjs,gulp-protractor,Protractor,Cucumber,E2e Testing,Cucumberjs,Gulp Protractor,我有这样一个黄瓜特征: @MainSuite Scenario: Verify that user can login Given I can see the login form Then I set a username And I set a password And I click in Login button Then I see the "wrong-password" message 我需要检查,用户可以登录在5个不同的页面。 我需要在5个不同的地方运行该功

我有这样一个黄瓜特征:

@MainSuite
Scenario: Verify that user can login
  Given I can see the login form
  Then I set a username
  And I set a password
  And I click in Login button
  Then I see the "wrong-password" message
我需要检查,用户可以登录在5个不同的页面。 我需要在5个不同的地方运行该功能。 这就像,我需要在/login.html、/old\u login.html、/after\u restore\u password.html等等中运行该功能(这只是一个示例)

你知道怎么做吗

目前,我只有一个硬编码的文件。显然我需要改变它

this.Given(/^I can see the login form$/, function(done) {
    this.goTo('login.html');
    browser.wait(EC.visibilityOf(this.loginFormContainer));
    done();
});

创建一个对象,其中包含可以转到的不同登录页面

如果需要执行任何额外的代码,请在步骤def中包含if语句

this.Given(/^I can see the "(.*)" login form$/, function(loginPage, done) {
    var logins = {
         login : "login.html",
         afterpasswordreset: "after-password-reset.html"
    }
    loginPage = loginPage.toLowerCase().replace(" ", "");
    this.goTo(logins[loginPage]);
    browser.wait(EC.visibilityOf(this.loginFormContainer));
    done();
});
为每个登录变体创建单独的场景或功能文件,或者简单地为它们创建场景大纲

编辑

下面是我将如何实现场景大纲:

@MainSuite
Scenario Outline: Verify that user can login
  Given I can see the "<loginType>" login form
  And I set a username
  And I set a password
  When I click in Login button
  Then I see the "wrong-password" message

 Examples:
    | loginType              |
    | Login                  |
    | After Password Reset   |
@MainSuite
场景大纲:验证用户是否可以登录
给定我可以看到“”登录表单
我设置了一个用户名
我设置了密码
当我点击登录按钮时
然后我看到“密码错误”的消息
示例:
|登录类型|
|登录|
|密码重置后|

Nop。您将有两个给定规则的执行,但下一行只有一个(When's和then's),这是什么意思?给定的时间不一定总是三人一组。这本身就是一种误解。它必须具有足够的描述性才能遵循,这就是为什么“And”和“But”语法规则已经就位的原因。你将如何在你的提案中写下你的建议?(用例子编辑你的答案。你会发现有一个问题。)我想我理解你所说的2次执行给定步骤的意思,但接下来的每一行只执行一次。对于场景大纲,您可以编写相同的场景,但需要使用示例表(如答案所示)进行细微调整。这实际上会在有非标题行的情况下运行场景,并使用它运行的场景中的行值在表中向下移动。如果步骤相同,这对整个站点的登录非常有效。你就是那个人。我没有意识到“情景大纲”的存在。非常感谢你!