如何在javafx和webview中创建或获取输入的xpath

时间:2015-10-06 18:00:54

标签: java webview javafx

有没有办法获取javafx webview中加载的页面的不同input / href / div的xpath?

例如: 我希望能够加载google.com 单击搜索框 返回system.out中搜索框的xpath。

1 个答案:

答案 0 :(得分:1)

嗯,我没有一个有效的例子,但我可以给你所需的所有必要的hinds。我也多次使用它来在Java和Javascript之间进行通信。接下来发生的是你指定一个Java类,它将被注入到Javascript部分中,并且就像两种语言之间的桥梁。首先,您需要一个回调类,只要您想从JavaScript端传递一些东西到Java

,就会调用它
import netscape.javascript.JSObject;

JSObject window = (JSObject) webView.getEngine().executeScript("window");
window.setMember("jsCallBack", new JSCallBack());

回调类至少需要一个可以从Javascript端调用的方法。在这种情况下,它是callback()方法

public final class JSCallBack {

    public JSCallBack() {}

    public void callback(final String response) {
         System.out.println(response) ; // this is the String which you passed on the JS side
    }
}

现在可以从Javascript端调用callback()方法,也可以传递参数。

在Javascript端,您可以通过

调用先前注入的对象的回调函数
function myCallback(value){
    jsCallBack.callback(value);
}

您需要做的下一件事是在Javascript中指定一个监听鼠标事件的监听器。已经有一个existing post可以解决为点击元素组装xpath的问题。在程序集之后,您只需将结果传递给回调。在this blog上,您还可以找到通过回调在JavaFx和Javascrit之间进行通信的示例。

所以我只有将String从JS传递到Java的经验,它运作得很好,我不知道它是否适用于不同类型的对象。