我正在写硒苏打水测试。当我使用方法别名来避免 args 复制粘贴时...
var method = bool ? browser.clickAndWait : browser.click;
method("css=button:first", function (err) {
if (err) {
console.log(err);
}
});
...我得到一个TypeError
:
/pathToMyProject/node_modules/soda/lib/soda/client.js:478
return this.command(cmd, args, fn);
^
TypeError: Object #<Object> has no method 'command'
完整代码:
var soda = require('soda'),
assert = require('assert');
var browser = soda.createClient({
host: 'localhost', port: 4444, url: 'http://google.com', browser: 'firefox'
});
browser.session(function (err) {
browser.open('/', function (err, body, res) {
if (!err) {
bool = false;
var method = bool ? browser.clickAndWait : browser.click;
method("css=button:first", function (err) {
if (err) {
console.log(err);
}
});
}
});
});
如果我只使用clickAndWait
or click
,一切正常,但是,我想根据bool
.
两个函数的参数是相同的,为什么这不起作用呢?当我使用没有 的简单函数时soda
,如下所示,一切正常:
var a = function(){};
var b = function(){};
var c = bool ? a : c;
c();
我得到同样的错误使用apply
:
var args = ["css=button:first", function (err) {
if (err) {
console.log(err);
}
}];
browser.click.apply(undefined, args);