Python COM Examples

From PeformIQ Upgrade
Revision as of 18:30, 30 April 2008 by PeterHarding (talk | contribs) (New page: <pre> ============================================================================ Try this Python-based COM automation “Hello World” code in XSI just for kicks! import win32com.clie...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
============================================================================

Try this Python-based COM automation “Hello World” code in XSI just for kicks!

import win32com.client
from win32com.client import constants as c

excel = win32com.client.Dispatch("Excel.Application")
book = excel.Workbooks.Add()
sheet = book.Worksheets(1)
sheet.Range("A1").Value = "Hello World!"
sheet.Range("A2").Value = str(Application.SIFilter(None, c.siObjectFilter))
book.SaveAs("c:\myBook.xls")

sheet = None
book = None
excel.Quit()
excel = None

You will have created a file in your root C: drive called myBook.xls that is an Excel file containing one cell in which the words “Hello World!” are written. Please note that this COM usage is not limited to Python. You can do this in whatever language that supports COM. I’ll leave it up to the reader to learn more about the specifics of the different COM objects that are out there.

============================================================================

def index():
	import win32com.client
	a=win32com.client.Dispatch('Excel.Application')
	a.Visible = 1
	a.Workbooks.Add()
	a.ActiveSheet.Cells(1,1).Value = 'aha'
	return "aha"

if __name__ == "__main__":
	print index()

============================================================================

But for your problem: 
You are trying to read the page before it is completely loaded 


either add a wait function or a simple sleep ( see below) 


from win32com.client import Dispatch 
import time 


ie = Dispatch("InternetExplorer.Application") 


ie.Navigate("https://secure.authorize.net/") 
# ie.Visible = True 



time.sleep(1) 
doc = ie.Document 


print doc.body.innerHTML 



or with a wait function 


from win32com.client import Dispatch 
import time 



def wait(ie): 
    while ie.Busy: 
        time.sleep(0.5) 
    while ie.Document.readyState != "complete": 
        time.sleep(0.5) 


ie = Dispatch("InternetExplorer.Application") 


ie.Navigate("https://secure.authorize.net/") 
# ie.Visible = True 


wait(ie) 


doc = ie.Document 


print doc.body.innerHTML 

============================================================================


============================================================================


============================================================================


============================================================================


============================================================================


============================================================================


============================================================================