如何将对象传递给CasperJS函数

比利

我正在编写一些工作测试代码,并试图弄清为什么会引发错误。我正在使用一种面向对象的方法来保持主脚本尽可能整洁。我有一个脚本包含了我所有的元素路径,称为elements.js。我正在使用幻影将该脚本注入到另一个包含名为click.js的click方法的文件中。例子:

function Click() {

   phantom.page.includeJs('/my/path/to/elements.js');
   var element = new Elements();

   this.clickElement = function() {
      casper.then( function() {
         casper.click(element.nameOfElement);
      });
   };
}

以这种方式运行脚本会引发未定义的错误,但是,如果我在click.js脚本中直接声明元素的路径,则测试可以正常运行:

function Click() {

  var nameOfElement = ('css > path > to > element');

  this.clickElement = function() {
     casper.then( function() {
         casper.click(nameOfElement);
     });
  };
}

我想从一个来源调用所有元素路径,只是为了保持脚本的整洁,您可以想象它们会变长,具体取决于我们正在测试的元素数。我也有其他文件需要用于此测试的元素路径,但它们遵循与上述click.js脚本相同的原则。

更新

这是我的element.js脚本的样子:

function Elements() {

   var nameOfElement = ("css path");
   var anotherElement = ("css path");

}
比利

我通过进入一个菜鸟脑中的屁来解决了这个问题。在我的element.js脚本中,我添加了一个简单的get方法,它现在可以工作。

function Elements() {

    var someElement = "css path";

    this.getSomeElementPath = function() {
        return someElement;
    };
}

在我的click.js脚本中将其称为:

function Click() {

    phantom.page.injectJs('path/to/element.js');
    var element = new Elements();

    this.clickSomeElement = function() {
        casper.then( function() {
            casper.click(element.getSomeElementPath());
        });
    };
}

而且,在我的主要脚本中:

'use strict':

phantom.page.injectJs('/path/to/element.js');
phantom.page.injectJs('/path/to/click.js');

var element = new Element();
var click = new Click();

casper.test.begin("Test", function (test) {

    var url = www.url.com;

    console.log(url);

    casper.start(url);

    casper.then(function() {
       click.clickSomeElement();
    });

    ....//rest of code

    casper.run(function() {
       casper.test.done();
    });
});

现在,测试将按预期运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将对象传递给单独的函数-Python

来自分类Dev

如何将对象传递给 std::accumulate 函数?

来自分类Dev

如何将对象传递给函数并将结果返回给原始函数

来自分类Dev

如何将对象传递给脚本?

来自分类Dev

如何将对象传递给react-redux

来自分类Dev

如何将对象传递给车把帮手

来自分类Dev

如何将对象传递给脚本?

来自分类Dev

jQuery如何将对象传递给另一个函数

来自分类Dev

如何将对象传递给rxjs subscription()回调函数?

来自分类Dev

如何将对象传递给TypeScript中的泛型函数

来自分类Dev

如何将对象传递给rxjs subscription()回调函数?

来自分类Dev

如何通过引用将对象传递给构造函数

来自分类Dev

c ++:将对象传递给函数

来自分类Dev

将对象传递给PowerShell函数

来自分类Dev

将对象传递给函数方法

来自分类Dev

如何将std :: bind对象传递给函数

来自分类Dev

如何将json对象传递给$ eval函数

来自分类Dev

将对象传递给函数调用中的函数

来自分类Dev

如何将对象的属性作为参数传递给函数

来自分类Dev

如何将对象列表传递给函数

来自分类Dev

如何将对象作为参数传递给函数

来自分类Dev

如何将对象列表传递给线程函数

来自分类Dev

在jQuery中将对象传递给回调函数

来自分类Dev

正在通过引用将对象传递给构造函数

来自分类Dev

将对象传递给Lua函数始终引用自身

来自分类Dev

无法将对象传递给Typescript中的构造函数

来自分类Dev

将对象传递给R中的generate()评估的函数

来自分类Dev

在jQuery中将对象传递给回调函数

来自分类Dev

将对象传递给函数或子过程