1

セレン Web ドライバーを使用して Java から JavaScript 関数を呼び出そうとしています。

ここにコードがあります

WebDriver driver = new FirefoxDriver();

driver.get("C:\\KIRAN\\TrialAndError.htm"); // The html page is loaded here

// Following is the way i am trying to run the javascript

ScriptEngineManager manager = new ScriptEngineManager();

ScriptEngine engine = manager.getEngineByName("javascript");

String script = "function getInputIds(param) {  
                          print(\"inside getInputIds\");    
                          var elems = document.form[0].elements;    
                          var length = elems.length;    
                          var arr = new Array();  
                          var match_found = 0;  
                          for (i = 0; i < elems.length; i++) {      
                               match_found = elems[i].id.match(/order_unit_line_rate_\\d+_unit/);       
                               if (match_found) {           
                                  arr.push(elems[i].id);        
                               }    
                           }    
                           print(elems[1].id);}";

engine.eval(script);

Invocable inv = (Invocable) engine; 

inv.invokeFunction("getInputIds", "Scripting!!" );

しかし、これはこのコードを実行したときに発生するエラーです

inside getInputIdsException : javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "document" is not defined. (<Unknown source>#1) in <Unknown source> at line number 1

「ドキュメント」オブジェクトを初期化して、このコードを実行するのを手伝ってください。

また、javascript 以外の Java ファイルで使用される配列 "arr" を返すことが可能かどうかも教えてください。

前もってありがとうキラン

4

2 に答える 2

1

ドライバー インスタンスに ScriptEngine が組み込まれている場合は、ScriptEngine を使用する必要はないと思います。

よくある質問から

WebDriver インスタンスを JavascriptExecutor にキャストすることで、Javascript を実行できます。Java では、これは次のようになります。

WebDriver driver; // Assigned elsewhere
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("return document.title");
于 2012-06-28T13:17:32.707 に答える
0

私はこれを試しました

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("C:\\QA\\Selenium\\workspace\\Module-NewServiceOrder\\src\\momentum\\getInputIds.js","");

でもこれが結果

Exception : org.openqa.selenium.WebDriverException: null (WARNING: The server did not provide any stacktrace information)

コマンドの実行時間またはタイムアウト: 63 ミリ秒 ビルド情報: バージョン: '2.24.1'、リビジョン: '17205'、時間: '2012-06-19 16:53:24' システム情報: os.name: 'Windows 7'、 os.arch: 'amd64'、os.version: '6.1'、java.version: '1.7.0_03' ドライバー情報: driver.version: RemoteWebDriver セッション ID: e2a43e1d-0eec-4640-ac0f-d72a485d98f8

私は関数に入ることができませんでした

于 2012-06-28T13:35:42.243 に答える