Hello,
I was wondering if anyone could tell me why fireEvent works in every
language but Python with the latest Internet Explorer?
I tried this page that has two listboxes if you select Listbox A the
Listbox B should change.
The code status:
Works fine with Python 2.3, 2.4 in Windows XPsp1
DOES not work Python 2.3, 2.4 XP Sp2 or the lastest IE
Works fine with "RUBY" on Win 2000, XP sp1 and XP sp2
Work fine with PERL on on Win 2000, XP sp1 and XP sp2
Luckily I know both Ruby, VB and Perl so I could prove there was a
problem.
Here is the example code in both Python and Ruby:
Python:
from win32com.client import DispatchEx
import time
def wait(ie):
while ie.Busy: time.sleep(0.1)
doc = ie.Document
while doc.ReadyState != 'complete': time.sleep(0.1)
ie = DispatchEx('Int ernetExplorer.A pplication')
ie.Visible = 1
ie.Navigate( 'https://enroll.ou.edu/' )
wait(ie)
ie.Document.for ms[0].campus.value=' 200'
ie.Document.for ms[0].campus.fireeve nt('onchange')
Results:
Traceback (most recent call last):
File
"C:\Python23\li b\site-packages\Python win\pywin\frame work\scriptutil s.py",
line 310, in RunScript
exec codeObject in __main__.__dict __
File "C:\automation\ poScript1.py", line 18, in ?
ie.Document.for ms[0].campus.fireeve nt('onchange')
File "C:\Python23\li b\site-packages\win32c om\client\dynam ic.py", line
154, in __call__
return
self._get_good_ object_(self._o leobj_.Invoke(* allArgs),self._ olerepr_.defaul tDispatchName,N one)
com_error: (-2147024891, 'Access is denied.', None, None)
Ruby:
# OU Registration & Enrollment Online
require 'win32ole'
ie = WIN32OLE.new('I nternetExplorer .Application')
ie.visible = true
ie.gohome
ie.navigate('ht tps://enroll.ou.edu/')
while ie.busy
end
READYSTATE_COMP LETE = 4
until
ie.readyState == READYSTATE_COMP LETE
end
form = ie.document.for ms(0)
form.campus.val ue = '200'
form.campus.fir eevent('onchang e')
Results: fireEvent was successful and the second listbox was changed
I was wondering if anyone could tell me why fireEvent works in every
language but Python with the latest Internet Explorer?
I tried this page that has two listboxes if you select Listbox A the
Listbox B should change.
The code status:
Works fine with Python 2.3, 2.4 in Windows XPsp1
DOES not work Python 2.3, 2.4 XP Sp2 or the lastest IE
Works fine with "RUBY" on Win 2000, XP sp1 and XP sp2
Work fine with PERL on on Win 2000, XP sp1 and XP sp2
Luckily I know both Ruby, VB and Perl so I could prove there was a
problem.
Here is the example code in both Python and Ruby:
Python:
from win32com.client import DispatchEx
import time
def wait(ie):
while ie.Busy: time.sleep(0.1)
doc = ie.Document
while doc.ReadyState != 'complete': time.sleep(0.1)
ie = DispatchEx('Int ernetExplorer.A pplication')
ie.Visible = 1
ie.Navigate( 'https://enroll.ou.edu/' )
wait(ie)
ie.Document.for ms[0].campus.value=' 200'
ie.Document.for ms[0].campus.fireeve nt('onchange')
Results:
Traceback (most recent call last):
File
"C:\Python23\li b\site-packages\Python win\pywin\frame work\scriptutil s.py",
line 310, in RunScript
exec codeObject in __main__.__dict __
File "C:\automation\ poScript1.py", line 18, in ?
ie.Document.for ms[0].campus.fireeve nt('onchange')
File "C:\Python23\li b\site-packages\win32c om\client\dynam ic.py", line
154, in __call__
return
self._get_good_ object_(self._o leobj_.Invoke(* allArgs),self._ olerepr_.defaul tDispatchName,N one)
com_error: (-2147024891, 'Access is denied.', None, None)
Ruby:
# OU Registration & Enrollment Online
require 'win32ole'
ie = WIN32OLE.new('I nternetExplorer .Application')
ie.visible = true
ie.gohome
ie.navigate('ht tps://enroll.ou.edu/')
while ie.busy
end
READYSTATE_COMP LETE = 4
until
ie.readyState == READYSTATE_COMP LETE
end
form = ie.document.for ms(0)
form.campus.val ue = '200'
form.campus.fir eevent('onchang e')
Results: fireEvent was successful and the second listbox was changed
Comment