我正在尝试从Java代码执行javascript函数。
我使用了硒包中的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代码执行上述脚本?有可能吗?
答案 0 :(得分:1)
尝试一下:
String script = "let time;time = 2;function f(){console.log(time);}f()";
JavascriptExecutor js;
js.executeScript(script);
答案 1 :(得分:1)
您可以使用窗口属性(或任何真正的内置属性),这些属性会一直存在:
@Test
public void reportingTest() throws Exception {
ContextRefreshedEvent contextRefreshedEvent = PowerMockito.mock(ContextRefreshedEvent.class);
Method privateMethod = ReportingProcessor.class.
getDeclaredMethod("collectEnvironmentData", ContextRefreshedEvent.class);
privateMethod.setAccessible(true);
String returnValue = (String)
privateMethod.invoke(reportingProcessor, contextRefreshedEvent);
Assert.assertEquals("Test", returnValue);
}