【发布时间】:2020-02-14 11:25:47
【问题描述】:
我正在尝试从 java 代码执行一个 javascript 函数。
我使用了 selenium 包中的 JavascriptExecutor。
我试过下面的代码
JavascriptExecutor js;
js.executeScript("let time;");
js.executeScript("time = 2;");
js.executeScript("function f(){console.log(time);}");
js.executeScript("f()");
这是输出
Exception in thread "Thread 0"
org.openqa.selenium.JavascriptException: javascript error: f is not defined
有没有办法从java代码执行上面的脚本?有可能吗?
【问题讨论】:
-
@i.bondarenko 谢谢。但我想知道 JavaScriptExecutor 方法是否可行
-
每次调用
executeScript都会创建一个单独的脚本。您必须将所有这些行放入同一个调用中,以便它们可以看到彼此的结果。 -
@M.Prokhorov 但从上面的 sn-p 中,即使它们是单独的脚本,'time' 变量也会被识别。有什么解释吗?
-
@SameerKhan,你怎么知道它被识别了,因为你从不打印它?
myvariable = 1本身就是有效的 javascript,它意味着全局变量赋值,并创建它尚未存在的变量,除非在严格模式下(你不是)。
标签: javascript java selenium