TypeError: 'str' object is not callable with win32com interfacing with Attachmate

TypeError: 'str' object is not callable with win32com interfacing with Attachmate

我正在使用 Python 尝试自动化 Attachmate - EXTRA!,类似于 VBA 中的大多数操作。

我正在使用找到的包 pywin32 here. 我正在使用 OLE 如何与 Attachmate 一起工作的文档(其中可以找到 GetString 和 PutString 方法)here.

我的代码:

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 的类型时,它确实是:<class 'win32com.client.CDispatch'>

我知道这个问题可能源于语法与 Attachmate/OLE 页面上解释的不同。但是,PutString 方法被解释为具有以下语法:object.PutString String [,Row][,Col][,Page],但我使用 sess0.screen.PutString("90", 1, 79) 使其工作正常。该代码正确地将字符串“90”放在我的 Attachmate 会话中的位置 1、79。

我很好奇这是否是软件包本身的问题。如果任何人有尝试使用 Python 自动化 Attachmate 的经验,将不胜感激他们的帮助!

我使用这些功能在 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(String)