Internet Explorer über Python/COM "fernsteuern"

Hi ihr alle! Suche nach einer Möglichkeit, den Internet Explorer fernzusteuern (über COM mittels Python). Wer kennt eine Online-Dokumentation der COM-Schnittstelle des IEXP? (bei www.microsoft.com habe ich außer ein paar obskuren Seiten nichts gefünden)!? Florian _______________________________________________ Python-de maillist - Python-de@starship.python.net http://starship.python.net/mailman/listinfo/python-de

Florian Fredegar Haftmann wrote:
Hi ihr alle!
Hi,
Suche nach einer Möglichkeit, den Internet Explorer fernzusteuern (über COM mittels Python). Wer kennt eine Online-Dokumentation der COM-Schnittstelle des IEXP? (bei www.microsoft.com habe ich außer ein paar obskuren Seiten nichts gefünden)!?
Die MS-interne Suche ist ziemlich schlecht, Google hilft hier weiter, z.B. 'MSDN IE COM interface' sollte schnell zum Ziel führen (ungetestet, weil in Eile). Da ich mit dem IE normalerweise nichts mehr zu tun habe, habe ich nur einige alte Module aus der Zeit von Python 1.5.2/2.0 als Beispiele. Eins davon (nach Ideen von Dave Brueck in comp.lang.python): ---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%< # ie_tools.py def ie_create_instance(visible): """Return a copy of MS Internet Explorer ready to use. Usage: >>> ie = ie_create_instance(visible=True) >>> doc = ie_navigate(ie, 'http://www.google.com') >>> doc.f.q.Value = 'python' >>> doc.f.Submit() >>> links = ie_wait_for_doc(doc).Links """ from win32com.client import DispatchEx ie = DispatchEx('InternetExplorer.Application.1') doc = ie_navigate(ie, 'about:blank') if visible: import pywintypes from win32gui import FindWindow, SetForegroundWindow ie.Visible = visible try: hwnd = FindWindow(None, 'about:blank - Microsoft Internet Explorer') if hwnd: SetForegroundWindow(hwnd) except pywintypes.error, err_msg: print '%s: %s' % (pywintypes.error, err_msg) return ie def ie_navigate(ie, url): from time import sleep ie.Navigate(url) while ie.Busy: sleep(0.05) return ie_wait_for_doc(ie.Document) def ie_wait_for_doc(doc, extra_delay=0): from time import sleep if extra_delay: sleep(extra_delay) while 1: try: if doc.readyState == 'complete': return doc except AttributeError: sleep(0.1) def ie_get_link(obj, pattern, failobj=None): from fnmatch import fnmatch try: links = obj.Links except AttributeError: links = obj.all.tags('a') # works for non-doc objs for i in range(links.length): link = links[i] if fnmatch(link.href.lower(), pattern.lower()): return link else: return failobj def ie_click_link(obj, pattern, delay=0): link = ie_get_link(obj, pattern) if link is None: raise ValueError('link matching %r not found in %r' % ( pattern, obj)) link.Click() try: doc = obj.document except AttributeError: doc = obj return ie_wait_for_doc(doc, delay) ---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%< Für die meisten Fragen lohnt sich übrigens eine Suche mit Google Groups: http://groups.google.de/groups?hl=de&lr=&ie=UTF-8&group=comp.lang.python Gruß, Oliver _______________________________________________ Python-de maillist - Python-de@starship.python.net http://starship.python.net/mailman/listinfo/python-de

Oliver Schaefer schrieb:
Die MS-interne Suche ist ziemlich schlecht, Google hilft hier weiter, z.B. 'MSDN IE COM interface' sollte schnell zum Ziel führen (ungetestet, weil in Eile).
Da ich mit dem IE normalerweise nichts mehr zu tun habe, habe ich nur einige alte Module aus der Zeit von Python 1.5.2/2.0 als Beispiele. Eins davon (nach Ideen von Dave Brueck in comp.lang.python):
[...] Danke für die Hilfe, hat mich gleich sehr viel weitergebracht. Florian _______________________________________________ Python-de maillist - Python-de@starship.python.net http://starship.python.net/mailman/listinfo/python-de
participants (3)
-
Florian Fredegar Haftmann
-
Florian Haftmann
-
Oliver Schaefer