1

私はPythonを使用してAttachmateを自動化しようとしています-EXTRA!、ほとんどがVBAで行うのと同様です。

ここにあるpywin32パッケージを使用しています ここでは、OLE が Attachmate (GetString メソッドと PutString メソッドの両方が見つかる場所) とどのように連携するかについてのドキュメントを使用しています。

私のコード:

system = win32com.client.Dispatch("EXTRA.System")
sess0 = system.ActiveSession

product = sess0.screen.GetString(0, 1, 2)

次のエラーが発生します。

line13: product = sess0.screen.GetString(1, 1, 2)
TypeError: 'str' object is not callable

メソッド GetString には構文があると言われています: rc = object.GetString (Row, Col, Length, [Page])、しかし、Python でこの構文を試してみると、上記のエラーが発生します。

このエラーを調査したところ、「mystring」() を実行しようとするのと同じであることがわかりました。sess0 のタイプを確認すると、実際には a: であるため、これはすべきではありません<class 'win32com.client.CDispatch'>

この問題は、Attachmate/OLE ページで説明されているものとは異なる構文に起因する可能性があることを知っています。ただし、 PutString メソッドはこの構文を持つと説明されています: object.PutString String [,Row][,Col][,Page]、しかし、私はそれを使用して正常に動作しました: sess0.screen.PutString("90", 1, 79)。このコードは、Attachmate セッションの位置 1、79 に文字列 "90" を正しく配置します。

パッケージ自体の問題なのか気になります。誰かが Python で Attachmate を自動化しようとした経験がある場合は、彼らの助けが大歓迎です!

4

1 に答える 1

1

私はこれらの関数を使用して、Attachmate EXTRA を読み書きします! 画面

次のことを試してください。

import win32com.client

def write(screen,row,col,text):
    screen.row = row
    screen.col = col
    screen.SendKeys(text)


def read(screen,row,col,length,page=None):
    if page is None:
        return screen.Area(row, col, row, col+length).value
    else:
        return screen.Area(row, col, row, col+length, page).value


def test():
    system = win32com.client.Dispatch("EXTRA.System")
    sess0 = system.ActiveSession
    screen = sess0.Screen

    product = read(screen, 1, 1, 2)
    print(product)
    write(screen, 1, 79, "90")

ドキュメンテーション:

Screen.Area(StartRow,StartCol,EndRow,EndCol[,Page][,Type])

SendKeys(文字列)

于 2016-12-21T14:23:29.037 に答える