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

问题描述:

有没有办法获取加载到javafx webview中的页面的不同输入/ href/div的xpath?如何在javafx和webview中创建或获取输入的xpath

例如: 我希望能够加载google.com搜索框 点击搜索框 回报的XPath的System.out。

+0

我可以知道什么是xpath? –

+0

XPath是XML路径语言,是一种用于从XML文档中选择节点的查询语言。 google.com搜索框的xpath是// * [@ id =“lst-ib”] – Andy

+0

等等,你想加载谷歌,你想单击搜索框,获取xpath(对于搜索框?)并将该xpath放入搜索框?你能为我解答这个问题吗? – jagdpanzer

那么我没有一个工作的例子,但我可以给你你需要的所有必要的后方。我也多次使用这几次在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之间通过回调进行通信的示例。

因此,我只有从JS传递String到Java的经验,它完美的工作,我不知道它是否适用于不同类型的对象。