selenium 如何将函数传递给Selify的JavaScript执行器?

mfuanj7w  于 2022-11-10  发布在  Java
关注(0)|答案(1)|浏览(104)

假设我有一个JS函数,如下所示:

function someFunction(callback) {
   callback()
}

我想把它从 selenium 中命名。对于普通参数(例如,字符串、数组、整数、Map、HTML元素),我可以执行以下操作:

driver.executeScript("someFunction(arguments[0])", "() => console.log('hi')")

Selify会自动转换/转义参数。但是如果一个参数是一个函数,那么它将作为一个字符串传递。上面的调用变为:

someFunction("() => console.log('hi')")

但它应该是:

someFunction(() => console.log('hi'))

有没有办法告诉Selify传递的参数是一个函数?

a7qyws3x

a7qyws3x1#

使用EVAL:

driver.executeScript("""
  var fn = eval(arguments[0])
  fn()
""", "() => console.log('hi')")

:我不知道如何在Java中转义引号,这是一种python风格

相关问题