2017-05-10 18 views
0

HACL Javaライブラリ・クラスを使用してIBM PComm Applicationを自動化しようとしています。 私はpcomセッションへの接続と、カーソル位置の設定/取得と、アプリケーションの画面上の現在のカーソル位置からのテキストの抽出に成功しました。しかし、画面上の所望のカーソル位置にテキストを置く/送ることができない。私はいくつかの自動化された回帰テストフレームワーク「ミドルウェア」を作るためにキュウリとPCOMMを自動化しながら、前に同様の問題があったJavaを使用したIBM PCOMMオートメーション

import java.util.Properties; 
import com.ibm.eNetwork.ECL.ECLConnMgr; 
import com.ibm.eNetwork.ECL.ECLConnection; 
import com.ibm.eNetwork.ECL.ECLErr; 
import com.ibm.eNetwork.ECL.ECLField; 
import com.ibm.eNetwork.ECL.ECLFieldList; 
import com.ibm.eNetwork.ECL.ECLPS; 
import com.ibm.eNetwork.ECL.ECLSession; 
import org.ohio.iOhioScreen; 
public class Pcom { 


     public static void main(String[] args) throws ECLErr { 

      try{ 

      System.loadLibrary("pcseclj"); 

      Properties prop = new Properties(); 
      // prop.put("SESSION_VT_LOCAL_ECHO ", "true"); 

      prop.put("SESSION_HOST", "C:\\Mainframe\\A.ws"); // works OK 


      prop.put("SESSION_WIN_STATE", "MAX"); 
      prop.put("SESSION_VT_KEYPAD ", "SESSION_VT_KEYPAD_APPL"); 
      prop.put("SESSION_VT_LOCAL_ECHO", "SESSION_VT_LOCAL_ECHO_ON"); 

      ECLSession session = new ECLSession(prop); 


      session.StartCommunication(); //works OK 
      Thread.sleep(5000); 
      session.connect(); //works OK 
      ECLFieldList fieldList = session.GetPS().GetFieldList(); 
      session.GetPS().SetCursorPos(18, 044); //works OK 
      /session.GetPS().SetString("some_text"); // does not work 
      for(int i=0;i<fieldList.size();i++){ //works OK 
        //System.out.println("field ======================= "+fieldList.GetFirstField(i).getAttribute()); 

      ECLPS ps=session.GetPS(); 
      System.out.println(session.GetName()); //works Ok 
      session.GetPS().SetCursorPos(17, 44); //works OK 
      session.GetPS().SendKeys("some_text",17,44); // does not work ,17,44 are co ordinate positions pn screen 
      System.out.println(session.GetConnType()); // works ok 
      ps.SendKeys("some_text"); //does not work 

     /* ------------ does not work------------- 
    fieldList.FindField(17, 44).SetText("some_text"); 
      fieldList.FindField(17, 44).SetString("some_text"); 
      fieldList.FindField(18, 44).setString("some_text"); 
     */ 

      System.out.println(fieldList.FindField(17, 44).GetLength()); // works ok 
      System.out.println(fieldList.FindField(17, 28).getString()); //works ok 


      } 

      catch(Exception e) 

      { 

       System.out.println(e); 

      } 

     } 

} 

答えて

0

:以下のように親切な接続を確立するためのコードを検索し、画面からテキストをフェッチしなさいこの問題を解決するのに役立ちBDDスタイルの緑色の画面用。

それは、SetCursorPosが新しいカーソル位置をホストシステムに送信しないということです(我々はIBM iを使用します)。 Telnet5250プロトコルは非常に複雑ですが、クライアントシステム(Terminal Emulator)とホストシステム(Telnetサーバー)の2つのバッファがあります。通常、それらは同期化されていますが、状況によっては未定義の動作につながっていません。

SendKeys("<Up>"); 
SendKeys("<Down>"); 

これは、サーバーとの同期画面バッファに新しいカーソル位置を送信するためにPCOMMを強制します:

Litleはハックまで送信し、このような矢印キーダウンすることです。

関連する問題