Javaプロジェクトでは、Browser
を使用してページを表示します。私は、JavaScriptとマッピングされたJavaメソッドを使用して、ドキュメントから要素を取得しました。HTMLDivElementをJavaコードに戻す方法
私はJavaScript:
var button = document.getElementById(`actionButton`);
if(element != null)
buttonFound(element);
button
はDivHtmlElement
です。 BrowserFunction
とオーバーライドメソッド
@Override
public Object function(Object[] arguments) {
browser.execute(arguments[0] + ".click()");
}
を拡張しかし、この方法function
が呼び出されていない(?)
マップされたJavaメソッドbuttonFound
ButtonFoundFunction(this, browser, "buttonFound");
...。
私が示しJavaScriptが以下のようではないDivHtmlElement
なく、簡単なボタンのidを返す試してみました:
@Override
public Object function(Object[] arguments) {
browser.execute("document.getElementById('" + arguments[0] + "').click();");
}
をクリックし
buttonFound(`actionButton`);
、その後オーバーライドfunction
コールに...そして、それは動作しますが、それはボタンを検索idで2回、JavaScriptで最初に、function
で2回目です。
返信方法DivHtmlElement
をfunction
に戻しますか?
EDIT
ボタン検索最初のJavaScript:
var buttons = [];
var buttons[0] = document.getElementById(`actionButton`);
第二のJavaScriptのみインデックスをクリックして実行します。@I wrestled a bear once
は、私は「できることを言うように
function doClick(index){
buttons[index].click();
}
「DivHtmlElement」とは何ですか? ['JavascriptのHTMLElement'](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement)を意味しますか?ネイティブJSオブジェクトを別の言語に渡すことはできません。 –
このSWTの 'Browser'クラスですか?その場合、executeメソッドはブラウザのコンテキストでのみJavaScriptを評価でき、DOM要素に直接アクセスすることはできません。 –
'DivHtmlElement'は' DOM'の一部です。 'browser'はSWTの' Browser'クラスです。 DOM要素をクリックする他のオプションがありますか?おそらく、この 'Browser'オブジェクトで2番目のJavaScriptを実行し、' DivHtmlElement'がキャッシュに保持されていますか?そして、2番目のJS(クリックだけを呼び出す)は、キャッシュされた配列から値を取得してクリックしますか? – ACz