【发布时间】:2016-04-07 06:07:05
【问题描述】:
import webdriver from 'selenium-webdriver';
const driver = new webdriver.Builder()
.withCapabilities(webdriver.Capabilities.chrome())
.build();
driver.get('https://www.google.com');
let foo = function(rules) {
rules.forEach(rule => {
rule();
});
}
let bar = function() { return 'bar' };
let baz = function() { return 'baz' };
driver.executeScript(foo, [bar, baz]).then(function(result) {
console.log(result);
});
driver.quit();
用
出错WebDriverError: unknown error: rule is not a function
let foo = function(rules) {
return rules;
// rules.forEach(rule => {
// rule();
// });
}
let bar = function() { return 'bar' };
let baz = function() { return 'baz' };
driver.executeScript(foo, [bar, baz]).then(function(result) {
console.log(result); // refer the log pasted below
});
看起来函数正在被序列化为string
[ 'function bar() {\n return \'bar\';\n}',
'function baz() {\n return \'baz\';\n}' ]
任何关于如何传递array of functions as arguments 的指针都会有所帮助。
【问题讨论】:
-
阅读 stackoverflow.com/questions/28117733/… 上的 cmets。共识是这种方法行不通/没有意义/是错误的。此外,WebDriver 协议对 JavaScript 函数一无所知。
标签: javascript selenium-webdriver webdriverjs