كيفية إغلاق عدم استجابة Win32 Internet Explorer Com واجهة؟

StackOverflow https://stackoverflow.com/questions/1700551

  •  19-09-2019
  •  | 
  •  

سؤال

في الواقع هذا ليس تعليق الحالة، أقصد ..
لذلك في هذه الحالة، أود إغلاق IE وأريد إعادة التشغيل من البداية.
لذلك إغلاق ليست مشكلة، المشكلة هي، كيفية ضبط المهلة، على سبيل المثال إذا قمت بتعيين 15sec،
في حالة عدم فتح صفحة الويب أقل من 15 ثانية، أريد إغلاقها وإعادة التشغيل من البداية.
هل هذا ممكن للاستخدام مع واجهة IE COM؟
من الصعب حقا العثور على الحلول بولس،

اعتدت أن أتبع التعليمات البرمجية للتحقق من Wether وهي صفحة الويب مفتوحة تماما أم لا. ولكن كما ذكرت، فإنه لا يعمل بشكل جيد، لأنني يبدو أنه يبدو أنه يعلق أو لا يستجيب.

        while ie.ReadyState != 4: 
              time.sleep(0.5)
هل كانت مفيدة؟

المحلول

لتجنب حظر المشكلة استخدم كائن IE COM في مؤشر ترابط.

إليك مثال بسيط ولكنه قوي يوضح كيف يمكنك استخدام مؤشر الترابط وأكائن IE COM معا. يمكنك تحسينه لغرضك.

يبدأ هذا المثال في مؤشر ترابط يستخدم قائمة انتظار للتواصل مع الخيط الرئيسي، في مستخدم الخيط الرئيسي يمكنه إضافة عناوين URL إلى قائمة URL إلى قائمة URL، وزيارات موضوع IE واحد تلو الآخر، بعد أن ينتهي عنوان URL واحد، أي الزيارات التالية. كما يتم استخدام كائن IE COM في مؤشر ترابط تحتاج إلى استدعاء المعدات المعدنية

from threading import Thread
from Queue import Queue
from win32com.client import Dispatch
import pythoncom
import time

class IEThread(Thread):
    def __init__(self):
        Thread.__init__(self)
        self.queue = Queue()

    def run(self):
        ie = None
        # as IE Com object will be used in thread, do CoInitialize
        pythoncom.CoInitialize()
        try:
            ie = Dispatch("InternetExplorer.Application")
            ie.Visible = 1
            while 1:
                url = self.queue.get()
                print "Visiting...",url
                ie.Navigate(url)
                while ie.Busy:
                    time.sleep(0.1)
        except Exception,e:
            print "Error in IEThread:",e

        if ie is not None:
            ie.Quit()


ieThread = IEThread()
ieThread.start()
while 1:
    url = raw_input("enter url to visit:")
    if url == 'q':
        break
    ieThread.queue.put(url)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top