2011-07-12 25 views
9

के साथ मैं इंटरनेट एक्सप्लोरर 8 (विंडोज 7 पर पायथन 2.7 का उपयोग करके) स्वचालित करना चाहता हूं।त्रुटि "ऑब्जेक्ट का ऑब्जेक्ट अपने ग्राहकों से डिस्कनेक्ट हो गया है" - स्वचालित आईई 8 पाइथन और win32com

import sys, time 
from win32com.client import WithEvents, Dispatch 
import pythoncom 
import threading  

stopEvent=threading.Event() 

class EventSink(object): 
    def OnNavigateComplete2(self,*args): 
     print "complete",args 
     stopEvent.set() 



def waitUntilReady(ie): 
    if ie.ReadyState!=4: 
     while 1: 
      print "waiting" 
      pythoncom.PumpWaitingMessages() 
      stopEvent.wait(.2) 
      if stopEvent.isSet() or ie.ReadyState==4: 
       stopEvent.clear() 
       break; 

if __name__ == '__main__': 
    time.clock() 
    ie=Dispatch('InternetExplorer.Application',EventSink) 
    ev=WithEvents(ie,EventSink)  
    ie.Visible=True 
    ie.AddressBar = True 
    ie.Navigate("http://www.sap.com/austria/index.epx") 
    waitUntilReady(ie) 

मैं http://www.sap.com/austria/index.epx के लिए निम्न त्रुटि संदेश मिल गया:

waiting 
waiting 
Traceback (most recent call last): 
    File "C:\Users\w\My Documents\Aptana Studio 3 Workspace\MyApp\src\GoToIdeaWindow.py", line 41, in <module> 
    waitUntilReady(ie) 
    File "C:\Users\w\My Documents\Aptana Studio 3 Workspace\MyApp\src\GoToIdeaWindow.py", line 26, in waitUntilReady 
    if stopEvent.isSet() or ie.ReadyState==4: 
    File "C:\Python27\lib\site-packages\win32com\client\__init__.py", line 463, in __getattr__ 
    return self._ApplyTypes_(*args) 
    File "C:\Python27\lib\site-packages\win32com\client\__init__.py", line 456, in _ApplyTypes_ 
    self._oleobj_.InvokeTypes(dispid, 0, wFlags, retType, argTypes, *args), 
pywintypes.com_error: (-2147417848, 'The object invoked has disconnected from its clients.', None, None) 

कोड के लिए पूरी तरह से काम करता है, उदाहरण के लिए, google.com या bbc.com यहाँ a post found on SO के बाद मेरे कोड है। क्या कोई जानता है कि क्या कारण हो सकता है?

+0

http://go-gaga-over-testing.blogspot.se/2013/06/the-object-invoked-has-disconnected.html –

उत्तर

10

IE9 पर, आप सुरक्षा सेटिंग्स को कम करने के लिए स्क्रिप्ट काम करने की जरूरत है:

IE9 -> Internet Options -> Security -> Trusted Sites : Low 
IE9 -> Internet Options -> Security -> Internet   : Medium + unchecked Enable Protected Mode 
IE9 -> Internet Options -> Security -> Restricted Sites : unchecked Enable Protected Mode 
+0

धन्यवाद। मैं आईई -11 पर इस समस्या के साथ दो दिनों से अधिक समय तक अपना सिर तोड़ रहा था, और इस सरल सेटिंग ने इसे हल किया! – user2979010

2

वाह। मैं एक ऐसी स्क्रिप्ट के साथ लड़ रहा हूं जो यह पता लगाने की कोशिश कर रहा था कि यह 10 वीं लाइन तक क्यों नहीं पहुंच पाया। माइक्रोसॉफ्ट हमारे संगठन में आईई 10 को चुपचाप इंटरनेट एक्सप्लोरर को स्वचालित रूप से अद्यतन कर रहा है और इसने सीआरएम डेवलपर्स के लिए प्रमुख सिरदर्द पैदा किए हैं। मैंने अब देखा है कि सेटिंग्स को डिफ़ॉल्ट रूप से रीसेट कर दिया गया है और संरक्षित मोड चालू कर दिया गया है।

आपकी साइट के विकास के दौरान आप कोशिश कर सकते हैं सबसे उपयोगी चीजों में से एक एफ 12 को धक्का दे रहा है और आईई संस्करण को अन्य संस्करणों में स्थापित कर रहा है। उदाहरण के लिए, आपकी साइट आईई 9 में काम करने के लिए प्रयुक्त होती है लेकिन 10 में तोड़ती है। यह आपको आईई 10 चलाने और कई संस्करणों में अपने कोड का परीक्षण करने की अनुमति देता है। मैं अभी भी कुछ वेबसाइटों को इंटरनेट एक्सप्लोरर के विशिष्ट संस्करणों में खोलने के लिए मजबूर करने का प्रयास कर रहा हूं, हर बार एफ 12 को धक्का दिए बिना।

+1

आप IE12 को टैग के साथ एक विशिष्ट संस्करण का उपयोग करने के लिए कह सकते हैं: <मेटा http-equiv = "X-UA-compatible" सामग्री = "IE = 8" /> – alanaktion

0

मैं कुछ इसी मुद्दे था, क्या मैंने किया था (हालांकि यह सी # .NET में mshtml और SHDocVw उपयोग कर रहा था):

  • सुरक्षा घटी इंटरनेट एक्सप्लोरर में स्तर ((इंटरनेट विकल्पों में से सुरक्षा टैब में) आप @Skarab कर की कोशिश की थी बस के रूप में),
  • प्रारंभ की तरह एक शून्य मान के लिए इंटरनेट एक्सप्लोरर चर:

    /*INITIALIZE THE BROWSER VARIABLE TO NULL VALUE*/ 
    SHDocVw.InternetExplorer ie =null; 
    ie = new SHDocVw.InternetExplorer(); 
    

उम्मीद है कि यह मदद करता है ...

2

मैं अपनी यानी सुरक्षा सेटिंग नहीं बदल सका लेकिन मुझे एक और समाधान मिला जो vbscript में काम करता है (मुझे नहीं पूछें कि मैं इसका उपयोग क्यों कर रहा हूं: डी)!

http://go-gaga-over-testing.blogspot.co.uk/2013/06/the-object-invoked-has-disconnected.html

Set ie = WScript.CreateObject("InternetExplorer.Application") 

    With ie 
     hwnd = .hwnd 
     .Navigate theURL 
    End With 

    Set oShell = CreateObject("Shell.Application") 

    For Each Wnd In oShell.Windows 
     If hwnd = Wnd.hwnd Then Set ie = Wnd 
    Next