Difference between revisions of "Python COM Examples"
PeterHarding (talk | contribs) |
PeterHarding (talk | contribs) |
||
Line 1: | Line 1: | ||
=Examples= | |||
Try this Python-based COM automation “Hello World” code in XSI just for kicks! | Try this Python-based COM automation “Hello World” code in XSI just for kicks! | ||
<pre> | |||
import win32com.client | import win32com.client | ||
from win32com.client import constants as c | from win32com.client import constants as c | ||
Line 18: | Line 18: | ||
excel.Quit() | excel.Quit() | ||
excel = None | excel = None | ||
</pre> | |||
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. | 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. | ||
Line 23: | Line 24: | ||
============================================================================ | ============================================================================ | ||
<pre> | |||
def index(): | def index(): | ||
import win32com.client | import win32com.client | ||
Line 33: | Line 35: | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
print index() | print index() | ||
</pre> | |||
But for your problem: | But for your problem: | ||
You are trying to read the page before it is completely loaded | You are trying to read the page before it is completely loaded | ||
Line 42: | Line 45: | ||
either add a wait function or a simple sleep ( see below) | either add a wait function or a simple sleep ( see below) | ||
</pre> | |||
from win32com.client import Dispatch | from win32com.client import Dispatch | ||
Line 60: | Line 64: | ||
print doc.body.innerHTML | print doc.body.innerHTML | ||
</pre> | |||
or with a wait function | or with a wait function | ||
</pre> | |||
from win32com.client import Dispatch | from win32com.client import Dispatch | ||
import time | import time | ||
Line 92: | Line 95: | ||
print doc.body.innerHTML | print doc.body.innerHTML | ||
</pre> | </pre> | ||
Revision as of 12:31, 14 December 2009
Examples
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