2015-10-06 51 views
0

有沒有辦法獲取加載到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

回答

1

那麼我沒有一個工作的例子,但我可以給你你需要的所有必要的後方。我也多次使用這幾次在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的經驗,它完美的工作,我不知道它是否適用於不同類型的對象。

相關問題