在将threading.Thread与SAP GUI自动化集成时出现问题

时间:2019-03-02 15:48:52

标签: python python-multithreading sap-gui

目标是让一个后台运行的进程每3-4分钟在SAP中执行一次操作。该函数作为方法运行时没有问题,但是作为线程运行时遇到错误(如下所示)。

class TimeOutPreventer(object):
    def __init__(self, interval=10):

        self.interval = interval

        thread = threading.Thread(target=self.run, args=())
        thread.daemon = True                           
        thread.start()                                  

    def run(self):
        while True:
            global connection
            global session
            session.findById("wnd[0]/tbar[0]/okcd").text = "/oabc"
            session.findById("wnd[0]").sendVKey(0)
            time.sleep(self.interval)

这会产生错误:

>>> Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:\ […] \lib\threading.py", line 916, in _bootstrap_inner
        self.run()
  File "C:\ […] \lib\threading.py", line 864, in run
        self._target(*self._args, **self._kwargs)
  File "C:\ […] \test.py", line 61, in run
        session.findById("wnd[0]/tbar[0]/okcd").text = "/nQA32"
  File "C:\ […] \lib\site-packages\win32com\client\dynamic.py", line 527, in __getattr__
        raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.findById

为了进行测试,我创建了一个方法来执行相同的任务,并故意拼错了findById以跟踪没有线程的错误。

Traceback (most recent call last):
  File "C:\ […] \ test.py", line 78, in Prevent_Timeout
        session.findBydId("wnd[0]/tbar[0]/okcd").text = "/nQA32"
  File "C:\ […] \lib\site-packages\win32com\client\dynamic.py", line 527, in __getattr__
        raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.findBydId

我将继续自己进行这项工作,直到/除非这里有人知道我在做什么错。如果我自己设法解决此问题,我将发布方法。

0 个答案:

没有答案