小编fra*_*ca7的帖子

python,COM和多线程问题

我试图从调度IE的单独线程看一下IE的DOM,对于某些属性我得到"没有这样的接口支持"错误.我设法将问题减少到这个脚本:

import threading, time

import pythoncom
from win32com.client import Dispatch, gencache
gencache.EnsureModule('{3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}', 0, 4, 0) # MSHTML

def main():
    pythoncom.CoInitializeEx(0)
    ie = Dispatch('InternetExplorer.Application')
    ie.Visible = True
    ie.Navigate('http://www.Rhodia-ecommerce.com/')
    while ie.Busy:
        time.sleep(1)

    def printframes():
        pythoncom.CoInitializeEx(0)
        document = ie.Document
        frames = document.getElementsByTagName(u'frame')
        for frame in frames:
            obj = frame.contentWindow

    thr = threading.Thread(target=printframes)
    thr.start()
    thr.join()

if __name__ == '__main__':
    thr = threading.Thread(target=main)
    thr.start()
    thr.join()
Run Code Online (Sandbox Code Playgroud)

一切都很好,直到frame.contentWindow.然后bam:

Exception in thread Thread-2:
Traceback (most recent call last):
  File "C:\python22\lib\threading.py", line 414, in __bootstrap
    self.run()
  File …
Run Code Online (Sandbox Code Playgroud)

python com internet-explorer automation

6
推荐指数
1
解决办法
1654
查看次数

标签 统计

automation ×1

com ×1

internet-explorer ×1

python ×1