如何在嵌套函数中将变量传递给javascript

时间:2016-09-23 18:39:56

标签: angularjs protractor

我有几个量角器/ angularjs它会重复我想要放在函数中的相同代码。我想只是调用函数而不是一遍又一遍地重复这个。

it('should move directly to Draft', function() {
  posting_sum_page.locate_action_button.click();
  posting_action_page.move_action.filter(function(elem) {
    return elem.getText().then(function(text) {
      return text === 'Draft';
    });
  }).click();
});

块的这一部分是我想要为其创建函数的重复部分。我是javascript的新手,所以这就是我不知道如何做到这一点。

return elem.getText().then(function(text) {
      return text === 'Draft';
    });
  }).click();

我需要能够替代'草稿'有不同的变数。我正在使用页面对象作为其中的一部分,我不确定A)如何创建这样的函数并传入我的文本& B)是否应该在规格方面或页面方面?这对大多数人来说可能是非常基本的。但由于我是javascript的新手,我无法绕过这个问题。

4 个答案:

答案 0 :(得分:0)

也许是这样的?

describe('...something...', function()
{
  var clickBtn;


  beforeEach(function()
  {
    clickBtn = function(testText)
    {
      return posting_action_page.move_action.filter(function(elem) 
      {
        return elem.getText().then(function(currentText) 
        {
          return currentText === testText;
        });
      }).click();
    };
  });


  it('should move directly to Draft', function() 
  {
    posting_sum_page.locate_action_button.click();
    expect(clickBtn('Draft')).toEqual('...something...');
  });
});

答案 1 :(得分:0)

如果您只想重复使用返回块

<LLVM root>/lib/Transform/CMakeLists.txt

答案 2 :(得分:0)

我会将整个过滤功能提取到&#34;助手&#34;模块。

helpers.js:

var Helpers = function () {
    this.filterByText = function (text) {
        return function (elem) {
            return elem.getText().then(function(actualText) {
                return actualText === text;
            });
        };
    }
}

module.exports = new Helpers();

测试中的用法:

var helpers = require("helpers");

describe("My Test", function () {
    it('should move directly to Draft', function() {
        posting_sum_page.locate_action_button.click();
        posting_action_page.move_action.filter(helpers.filterByText('Draft')).click();
    });
});

答案 3 :(得分:0)

我不确定SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data 的页面对象类型是什么,但我认为您正在寻找的是使用by.buttonTextby.linkText

<asp:CustomValidator ID="cvdPhoneNumber" runat="server" Display="Dynamic" ForeColor="Red" ControlToValidate="txtPhoneNumber" ClientValidationFunction="validatePhoneNumber" ErrorMessage=""  />

还有其他定位器可能会有帮助,例如posting_action_page.move_action// html: <button>Draft</button> element(by.buttonText('Draft')).click(); // html: <a href="">Draft</button> element(by.linkText('Draft')).click();