2017-01-13 3 views
0

DOM(JavaScript)の戻り要素をJavaコードに変換し、その上でクリックアクションを最適化します。DOM要素をJavaScriptからJavaに戻してクリックを最適化する

それは(ボタンが存在することを確認してください)、私はマップされた関数によって名前actionButtonを返さ

ButtonFoundFunction(this, browser, "buttonFound"); - in Java code 

buttonFound(`actionButton`); - in JavaScript 

取得見つけたとき最初に私はJavaScriptを

var buttonToReturn = document.getElementById('actionButton'); 

することにより、文書内の要素(ボタン)を検索返されたボタン名actionButtonButtonFoundFunctionで、BrowserFunctionになり、public Object function(Object[] arguments)...を上書きし、この要素を以下のようにクリックします

browser.execute("document.getElementById('" + arguments[0] + "').click();"); 

しかしdocument.getElementById(...)ボタンを2回目に検索します。それで問題は何ですか?

ボタンを一度検索する(JavaScriptのみ)に最適化し、要素全体をJavaコード(buttonToReturn)に戻し、document.getElementById(...)で2回目の検索なしでクリックします。私はしたいと思いますそれは私が二度目にそれを探していない、この要素の上に、ブラウザのクリックで実行することを意味

browser.execute(arguments[0] + ".click();"); 

以下のようになります実行します。

buttonToReturnを返そうとしましたが、動作しません。BrowserFunctionは呼び出されません(間違ったタイプですか?)。たぶん私は代わりにJavaコードで他のオブジェクトを使用する必要がありますObject

  1. searchButton() 
+------+ -------------> +----------+ 
| Java |     |JavaScript| 
+------+ <------------- +----------+ 
      2. buttonFound() 
^ 
|   
3. browser.execute(arguments[0] + ".click();"); 

EDIT

buttonToReturnHTMLDivElementであり、私はそれを返さないことができます。

答えて

0

は、私はJavaのネイティブJSオブジェクトを渡すことはできません

を解決しました。

JavaScriptがそのように見える時:buttons配列はSWT Browserキャッシュにあるので

browser.execute("buttons[0].click()"); 

:Javaでクリックを実行するために

var buttons = []; 

var buttons[0] = document.getElementById(`actionButton`); 

それがコードで十分です。

関連する問題