如何向Selenium的JavaScript执行器传递函数?
解决Selenium传递函数参数的问题
你遇到的核心问题是Selenium会把传入的函数字符串当作普通字符串处理,而非JS函数。可以用以下几种方式解决:
直接在执行脚本中定义函数
不需要把函数作为参数传递,直接在executeScript的脚本字符串里写出完整的函数调用逻辑,这样执行时会直接解析为JS函数:driver.executeScript(` someFunction(() => console.log('hi')) `)用
eval转换字符串为函数
如果需要动态传入函数内容,可将函数字符串作为参数传递,在执行脚本中用eval把字符串转为函数(注意:仅在内容完全可控时使用,避免安全风险):driver.executeScript(` const callback = eval(arguments[0]); someFunction(callback); `, "() => console.log('hi')")拆分函数逻辑传递
把函数内部的逻辑作为字符串参数传递,在执行脚本中包裹成函数:driver.executeScript(` someFunction(function() { ${arguments[0]} }); `, "console.log('hi')")
内容的提问来源于stack exchange,提问作者Luís Soares
相关产品推荐
相关产品推荐

