You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ORPA-pyOpenRPA/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/comtypes/test/test_ie.py

108 lines
3.0 KiB

import unittest as ut
from ctypes import *
from comtypes.client import CreateObject, GetEvents
import comtypes.test
comtypes.test.requires("ui")
class EventSink:
def __init__(self):
self._events = []
# some DWebBrowserEvents
def OnVisible(self, this, *args):
## print "OnVisible", args
self._events.append("OnVisible")
def BeforeNavigate(self, this, *args):
## print "BeforeNavigate", args
self._events.append("BeforeNavigate")
def NavigateComplete(self, this, *args):
## print "NavigateComplete", args
self._events.append("NavigateComplete")
# some DWebBrowserEvents2
def BeforeNavigate2(self, this, *args):
## print "BeforeNavigate2", args
self._events.append("BeforeNavigate2")
def NavigateComplete2(self, this, *args):
## print "NavigateComplete2", args
self._events.append("NavigateComplete2")
def DocumentComplete(self, this, *args):
## print "DocumentComplete", args
self._events.append("DocumentComplete")
class POINT(Structure):
_fields_ = [("x", c_long),
("y", c_long)]
class MSG(Structure):
_fields_ = [("hWnd", c_ulong),
("message", c_uint),
("wParam", c_ulong),
("lParam", c_ulong),
("time", c_ulong),
("pt", POINT)]
def PumpWaitingMessages():
from ctypes import windll, byref
user32 = windll.user32
msg = MSG()
PM_REMOVE = 0x0001
while user32.PeekMessageA(byref(msg), 0, 0, 0, PM_REMOVE):
user32.TranslateMessage(byref(msg))
user32.DispatchMessageA(byref(msg))
class Test(ut.TestCase):
def tearDown(self):
import gc
gc.collect()
import time
time.sleep(2)
def test_default_eventinterface(self):
sink = EventSink()
ie = CreateObject("InternetExplorer.Application")
conn = GetEvents(ie, sink=sink)
ie.Visible = True
ie.Navigate2(URL="http://docs.python.org/", Flags=0)
import time
for i in range(50):
PumpWaitingMessages()
time.sleep(0.1)
ie.Visible = False
ie.Quit()
self.assertEqual(sink._events, ['OnVisible', 'BeforeNavigate2',
'NavigateComplete2', 'DocumentComplete',
'OnVisible'])
del ie
del conn
def test_nondefault_eventinterface(self):
sink = EventSink()
ie = CreateObject("InternetExplorer.Application")
import comtypes.gen.SHDocVw as mod
conn = GetEvents(ie, sink, interface=mod.DWebBrowserEvents)
ie.Visible = True
ie.Navigate2(Flags=0, URL="http://docs.python.org/")
import time
for i in range(50):
PumpWaitingMessages()
time.sleep(0.1)
ie.Visible = False
ie.Quit()
self.assertEqual(sink._events, ['BeforeNavigate', 'NavigateComplete'])
del ie
if __name__ == "__main__":
ut.main()