类型错误:"str"对象在 win32com 与 Attachmate 接口时不可调用



我正在使用Python尝试自动化Attachmate - EXTRA!

我使用这里找到的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'>

我知道这个问题可能源于语法不同于附件/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[、页面][,])

SendKeys(字符串)

相关内容

  • 没有找到相关文章

最新更新