有没有办法获取javafx webview中加载的页面的不同input / href / div的xpath?
例如: 我希望能够加载google.com 单击搜索框 返回system.out中搜索框的xpath。
答案 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的经验,它运作得很好,我不知道它是否适用于不同类型的对象。