我已经学会了如何创建 Javascript 回调函数,并且我对“函数式编程”有基本的了解,因为它看起来很简单。然而,我是 javascript 的新手,它的语法我找不到在我的 IntelliJ IDE 中测试所述语法的好方法。
你在做什么?
我正在创建一个基于 Selenium 的工具来点击一个 webelement,等待它重新加载页面,变得陈旧或等待超时。我这样做的原因是将 webelements 分为三类:导致页面重新加载,变得陈旧,不会改变。为此,我使用 Java 附带的 JavascriptExecutor 制作了一个简单的 javascript 脚本。我的大部分代码都是用 java 编写的,这是我精通的语言。我想学习如何使用 javascript 和 java 来做我想要用网页做的事情。
好的,但具体是什么问题?
我有一个 javascript 回调函数:
function test(callback) {callback();}
function Return() {SeleniumTest.isPageReloaded.JavascriptWorking}
window.addEventListener('onload', test(Return));
它在 Javascript Executor 中执行,如下所示:
System.setProperty("webdriver.chrome.driver",
"C:\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
String script = "function test(callback) {callback();}" +
"function Return()" +
"{SeleniumTest.isPageReloaded.JavascriptWorking}" +
"window.addEventListener('onload', test(Return));";
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript(script);
这基本上是之前的 Javascript 脚本,作为字符串执行。如您所见,我正在尝试调用 Java 类。SeleniumTest 是我的包,isPageReloaded 是当前类,JavascriptWorking 是该类中的静态方法。该静态方法如下所示:
public static void JavascriptWorking(){
System.out.println("Javascript ran here");
}
它意味着是一种从 javascript 获取某些内容到我的 java 代码的简单方法。我以这种方式尝试的原因是因为我阅读了以下内容:
https://documentation.progress.com/output/ua/OpenEdge_latest/index.html#page/bpm-appdev/invoking-java-methods-in-javascript.html
但后来我意识到它行不通,我挖得更深。我读到 Javascript 和 Java 是由服务器和客户端分开的,我从这个问题中获得了一些见解:
在javascript代码中调用java方法
但是,我不是 100% 确定这对我的情况是准确的,因为我正在执行的 Javascript 不是来自我正在测试的网页,而是我自己在 java 代码中将其作为字符串制作的。此外,我仍然对这个问题的答案是否真的适用于我感到非常困惑。只有一个,它基本上只是说,“安装一些东西,因为 java 是客户端而 javascript 是服务器端”。我(有点)理解这些术语的含义,但我不确定我在课堂上制作的 javascript 是否会被视为“服务器端”,实际上似乎并非如此。我需要的是澄清 A: 我在我的 Java 代码中运行/创建的 javascript 实际上是服务器端吗?乙:如果是,那么有人可以给我一个关于如何从服务器调用 java 代码的基本概要吗?这需要权限吗?我假设我必须与所述服务器通信,这是否意味着我使用 GET 和 POST 请求?C:如果 Javascript 不是服务器端,那么它必须是客户端,我应该可以很容易地调用它,对吗?我该怎么做呢?
开满天机
相关分类