<legend id='SC5KM'><style id='SC5KM'><dir id='SC5KM'><q id='SC5KM'></q></dir></style></legend>

      <small id='SC5KM'></small><noframes id='SC5KM'>

    1. <i id='SC5KM'><tr id='SC5KM'><dt id='SC5KM'><q id='SC5KM'><span id='SC5KM'><b id='SC5KM'><form id='SC5KM'><ins id='SC5KM'></ins><ul id='SC5KM'></ul><sub id='SC5KM'></sub></form><legend id='SC5KM'></legend><bdo id='SC5KM'><pre id='SC5KM'><center id='SC5KM'></center></pre></bdo></b><th id='SC5KM'></th></span></q></dt></tr></i><div id='SC5KM'><tfoot id='SC5KM'></tfoot><dl id='SC5KM'><fieldset id='SC5KM'></fieldset></dl></div>
      <tfoot id='SC5KM'></tfoot>
      • <bdo id='SC5KM'></bdo><ul id='SC5KM'></ul>

      1. Protractor Cucumber BDD 测试在执行前显示通过

        时间:2023-10-12
      2. <i id='wbwxP'><tr id='wbwxP'><dt id='wbwxP'><q id='wbwxP'><span id='wbwxP'><b id='wbwxP'><form id='wbwxP'><ins id='wbwxP'></ins><ul id='wbwxP'></ul><sub id='wbwxP'></sub></form><legend id='wbwxP'></legend><bdo id='wbwxP'><pre id='wbwxP'><center id='wbwxP'></center></pre></bdo></b><th id='wbwxP'></th></span></q></dt></tr></i><div id='wbwxP'><tfoot id='wbwxP'></tfoot><dl id='wbwxP'><fieldset id='wbwxP'></fieldset></dl></div>
        <tfoot id='wbwxP'></tfoot>

        • <bdo id='wbwxP'></bdo><ul id='wbwxP'></ul>

          <small id='wbwxP'></small><noframes id='wbwxP'>

            <tbody id='wbwxP'></tbody>

          <legend id='wbwxP'><style id='wbwxP'><dir id='wbwxP'><q id='wbwxP'></q></dir></style></legend>

                • 本文介绍了Protractor Cucumber BDD 测试在执行前显示通过的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我有一个使用 Protractor 和 Cucumber 的示例 BDD 测试.在执行代码时,控制台立即显示结果为通过,代码实际上才开始执行.

                  I have a sample BDD test using Protractor with Cucumber. On executing the code, the console immediately shows the result as passed and the code actually begins executing only after that.

                  我希望执行状态显示与实际执行同步.(例如,控制台显示 - '鉴于我启动量角器演示页面'并执行下面的代码,然后控制台显示下一步和等等)我知道它与异步编码和回调有关,但无法找出确切的问题.

                  I wish execution status display to be in sync with actual execution.(e.g Console displays - 'Given I launch the protractor demo page' and the code underneath is executed, then console displays next step and so on) I know it has got something to do with Async coding and callbacks, not able to figure out the exact problem though.

                  功能文件:

                  Feature: Test
                  Scenario:  Test Scenario
                      Given I launch the protractor demo page
                      When I enter two in the first field
                      And I enter three in the second field
                      And I click Go button
                      Then Result should be displayed as Five
                  

                  步骤文件:

                   var chai = require('chai');
                      var chaiAsPromised = require('chai-as-promised');
                      chai.use(chaiAsPromised);
                      var expect = chai.expect;
                  
                      module.exports = function () {
                  
                  
                          this.Given(/^I launch the protractor demo page$/, function (callback) {
                              browser.driver.manage().window().maximize();
                              browser.get('http://juliemr.github.io/protractor-demo/');
                  
                              browser.getTitle().then(function(text){
                                 console.log('title is - ' + text);
                                  expect(text).to.equal('Super Calculator');
                              });
                           callback();
                          });
                  
                          this.When(/^I enter two in the first field$/, function (callback) {
                              element(by.model('first')).sendKeys('2');
                              callback();
                          });
                  
                          this.When(/^I enter three in the second field$/, function (callback) {
                              element(by.model('second')).sendKeys('3');
                              callback();
                          });
                  
                          this.When(/^I click Go button$/, function (callback) {
                              element(by.id('gobutton')).click();
                              callback();
                          });
                  
                          this.Then(/^Result should be displayed as Five$/, function (callback) {
                               element(by.repeater('result in memory')).all(by.tagName('td')).get(2).getText().then(function(text){
                              expect(text).to.equal('5');
                              });
                              callback();
                          });
                  
                      };
                  

                  推荐答案

                  您需要 return 一个承诺或在步骤定义中使用 done 回调.否则黄瓜不知道你什么时候异步动作完成.

                  You need to either return a promise or use the done callback in your step definitions. Otherwise cucumber doesn't know when your asynchronous actions are complete.

                  我有同样的问题,上面的陈述是 protractor-cucumber github 论坛的核心成员之一的回复.

                  I had the same question and above statement was the response from one of the core members of the protractor-cucumber github forum.

                  当我使用 .then 函数对结果执行某些操作时,我更喜欢 return 承诺,并在我使用 .done 回调函数时不是,你也不需要 callbacks 现在 CucumberJS 支持承诺.所以你的步骤文件应该看起来像 -

                  I prefer to return promises when I am performing some actions on the results with .then function and use .done callback function when I am not, Also you don't need callbacks now CucumberJS supports promises. So your step file should look like -

                  var chai = require('chai');
                  var chaiAsPromised = require('chai-as-promised');
                  chai.use(chaiAsPromised);
                  var expect = chai.expect;
                  
                  module.exports = function () {
                  
                  
                      this.Given(/^I launch the protractor demo page$/, function () {
                          browser.driver.manage().window().maximize();
                          browser.get('http://juliemr.github.io/protractor-demo/');
                  
                        return browser.getTitle().then(function(text){
                             console.log('title is - ' + text);
                              expect(text).to.equal('Super Calculator');
                          });
                      });
                  
                      this.When(/^I enter two in the first field$/, function () {
                         return element(by.model('first')).sendKeys('2'); 
                      });
                  
                      this.When(/^I enter three in the second field$/, function () {
                         return element(by.model('second')).sendKeys('3'); // you can use return also
                      });
                  
                      this.When(/^I click Go button$/, function () {
                          return element(by.id('gobutton')).click();
                      });
                  
                      this.Then(/^Result should be displayed as Five$/, function () {
                          return element(by.repeater('result in memory')).all(by.tagName('td')).get(2).getText().then(function(text){
                          expect(text).to.equal('5');
                          });
                  
                      });
                  
                  };
                  

                  我建议你阅读Promises http://www.html5rocks.com/en/tutorials/es6/promises/ 因为它需要一些了解它们的行为方式.它们有时可能很棘手,我花了一段时间才得到一个想法,但我还有很多东西要学:)

                  I would recommend you to read about Promises http://www.html5rocks.com/en/tutorials/es6/promises/ as it requires some understanding how they behave.They can be sometimes tricky, it took me a while to get an idea still I have lot to learn :)

                  这篇关于Protractor Cucumber BDD 测试在执行前显示通过的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:断言元素被聚焦 下一篇:控制 browser.wait() 的轮询频率(流利等待)

                  相关文章

                  最新文章

                  1. <legend id='14TCj'><style id='14TCj'><dir id='14TCj'><q id='14TCj'></q></dir></style></legend>

                      <tfoot id='14TCj'></tfoot>
                      <i id='14TCj'><tr id='14TCj'><dt id='14TCj'><q id='14TCj'><span id='14TCj'><b id='14TCj'><form id='14TCj'><ins id='14TCj'></ins><ul id='14TCj'></ul><sub id='14TCj'></sub></form><legend id='14TCj'></legend><bdo id='14TCj'><pre id='14TCj'><center id='14TCj'></center></pre></bdo></b><th id='14TCj'></th></span></q></dt></tr></i><div id='14TCj'><tfoot id='14TCj'></tfoot><dl id='14TCj'><fieldset id='14TCj'></fieldset></dl></div>

                      <small id='14TCj'></small><noframes id='14TCj'>

                      • <bdo id='14TCj'></bdo><ul id='14TCj'></ul>