2011-07-21 10 views
0

Web UIテストでSeleniumとTestNGフレームワークを使用します。私はクリックしたいファイルダウンロードダイアログボックスを持っていますが、AutoITを使用しています。 AutoITスクリプトはJavaコードから何もしません

は、ここで「オープニング」

Opt("WinTitleMatchMode", -2)  
If $CmdLine[0] < 2 Then  
ConsoleWrite("Usage: " & @ScriptName & " <Opening> <timeout in seconds>" & @CRLF) 
Exit(1) 
EndIf 
; File save dialog is titled "Opening <file>" in Firefox and "File Download" in IE. 

$title = WinGetTitle($CmdLine[1]) ; retrives whole window title $timeout = $CmdLine[2] 
; wait until dialog box appears 
If WinWait($title, "", $timeout) Then ; match the window with substring 
;ConsoleWrite("Found File save dialog" & @CRLF) 
WinActivate($title)  
Send("!S") 
ControlClick("Opening", "", "[TEXT:&OK]") 
Exit 
Else  
    ConsoleWrite("File save dialog did not appear after " & $timeout & " seconds" & @CRLF)  
Exit(2) 
EndIf 

これは私のJavaコードとはAutoItのexeファイルへのパスがシステムパスに追加されたされ題しFirefoxの金融商品取引法]ダイアログボックスを処理するために私のスクリプトです。しかし、問題は、コードがexeで何もしないように見える、それはその行を実行し、次のものに行くが、ファイルダイアログボックスは認識されなかったかのように残る。

final String type = getWebDriver().getClass().getName(); 
     if (type.toLowerCase().contains("firefox")) { 
      exe = "SelectFileDialogOptions.exe"; 
      commandLine = exe + " Opening " + 15; 
     } else { 
       //handle IE 
     } 
     logger.info("Executing the command '" + commandLine + "'..."); 
     try { 
      final String[] commands = commandLine.split(" "); 
      Runtime.getRuntime().exec(commands); 
     } catch (final IOException e) { 
      throw new WebTestControllerException(
        "Caught exception while trying to execute command '" 
          + commandLine 
          + "'. Exception is: " 
          + e.getMessage()); 
     } 
+0

'ConsoleWrite()'を 'MsgBox()'に変更して、どれだけ遠くにいるか試してみてください。 –

+0

同様に試しましたが、exeを実行すると同じ結果になりました。手動で試してみると、ファイルダイアログを開いてコマンドラインからAutoITスクリプトを実行すると、ConsoleWrite/Msgboxが表示されているのが見えますが、それでもダイアログボックスは表示されません。おそらく、 – Jai

答えて

1

$ timeoutは定義されていません。スクリプトがクラッシュするはずです。

+0

これはJavaコード – Jai

+0

@ Jaiで渡された "15"ですが、AutoItスクリプトで$ CmdLine [2]を$ timeoutに割り当てないと、その部分はここでコメントアウトされます: '$ title = WinGetTitle ($ CmdLine [1]); $ timeout = $ CmdLine [2] 'の全ウィンドウタイトルを検索すると、$ timeoutの前に改行があるはずです。 – Matt

+0

ああ、申し訳ありませんが、それはここでフォーマットされている方法ですが、私のスクリプトでは、それが割り当てられています。 – Jai

関連する問題