0
我正在編寫Selenium soda測試。 當我使用方法別名來避免ARGS copyPasting ...TypeError:對象在硒中沒有方法「命令」
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
或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);