كيف يمكنني استخدام AutoIT لإغلاق جميع تنبيهات JavaScript وتأكيدات قد تظهر؟

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

سؤال

أنا اختبار في السيلينيوم ولدي مجموعة من الأشياء التي تحدث في تحميل الصفحة. اكتشفت AutoIt، وكنت أفكر في أنه يمكنه التعامل مع جميع مشكلات حوار جافا سكريبت. كنت أبحث حول الويب لبعض النصي AutoIt الذي يمكن التعامل مع هذا ...

خيارات أخرى ستكون مفيدة أيضا!

لا أحتاج بالضرورة كل التعليمات البرمجية، لكن هناك نقطة في الاتجاه الصحيح ستكون مفيدة.

هل كانت مفيدة؟

المحلول

حسنا، يعمل هذا الحل بالنسبة لي ... كنت قادرا على إغلاق 2 نوافذ هنا. أيضا سأكون قادرا على التعامل مع النوافذ المنبثقة بناء على اسمها الذي هو بارد. يعمل دائما في الخلفية بعد أن قمت بتشكيل البرنامج النصي. عندما أريدها أن تنتهي ببساطة إغلاق AutoIT من إدارة المهام أو من منطقة شريط المهام على اليمين.

While True
If WinWait('Name of your Popup', '', 1) == 1 Then
    ;Wait for page to load if found
    Sleep(10000)
    ;Close Page
    Send('!{F4}') 
    Sleep(5000)
    ;Confirm Dialog
    Send('{ENTER}') 
    Sleep(1000)
    ;Close Lanucher Page
    Send('!{F4}') 
    Sleep(5000)
    ;Confirm Dialog
    Send('{ENTER}') 
EndIf
;Let another thread have a turn
sleep(3)
WEnd

هذا ممكن أيضا من خلال ثعبان مباشرة، التفاصيل: http://www.parriisstudios.com/؟p=308., ، ولكن لا تزال بحاجة إلى autoit3.

نصائح أخرى

إذا كنت تواجه مشكلات مع مربعات التنبيه، فقد ترغب في تعطيلها برمجيا أو إنشاء وضع منفصل في التعليمات البرمجية التي من شأنها تشغيلها بناء على شرط (أي وضع التصحيح).

برامج تسجيل الماكرو لا تعمل وكذلك قد تفكر. عادة ما تقوم برامج تسجيل الكلية بتسجيل مواقع نقرات الماوس وتوقيت المطابع المفاتيح. تستخدم برامج تسجيل الكلية أفضل (معالجة الصور عادة) وتقنيات رؤية الكمبيوتر (نادرا). الحلول التي تستخدم هذه التقنيات هي عادة مكلفة للغاية. (5K-10K لكل مقعد) [لا أستطيع أن أتذكر أحد أسماء الإصدارات الأفضل قد يكون سريعة, ، ولكن تصنعها شركة تم شراؤها بواسطة HP

كنت أحاول التفاعل مع صفحة ويب مع AutoIT وتبقى تنبيهات JavaScript غبي كسر كل شيء وأخيرا اكتشفت كيفية تعطيلها لذلك اعتقدت أنني سوف نشرها هنا:

#include <ie.au3>

$oIE = _IEAttach('https://www.site.com','URL')

$EventObject=ObjEvent($oIE.document,"IEEvent_")
Func IEEvent_onreadystatechange()
    $readystate=$oIE.document.readystate
    ConsoleWrite ($readystate & @CRLF )
    if $readystate='interactive' then killalert()
EndFunc

while 1
    sleep(100)
WEnd

func killalert()
Local $o_head = $oIE.document.all.tags("HEAD").Item(0)
Local $o_script = $oIE.document.createElement("script")
With $o_script
    .language = "jscript"
    .type = "text/javascript"
    .text = 'function alert(message) {};'
EndWith
$o_head.appendChild($o_script)
EndFunc

في الأساس ما يفعله هذا وظيفة يتم استدعاؤه في AutoIT عندما تكون الحالة جاهزة للصفحة = 'Interactive' (على ما يبدو بعد أن تم تحميل معظم الصفحة ولكن قبل ذلك "يعمل" أي شيء رأيه) الذي يدرج بعض JavaScript في الصفحة إلى الصفحة redefine وظيفة التنبيه () وظيفة بحيث لا يفعل شيئا (لا يوجد مربع حوار تنبيه للقلق بشأن الاضطرار إلى النقر فوق "موافق"). لقد اختبرت هذا ويعمل.

إذا كانت لديك وظيفة التنبيه () التي يتم استدعاؤها من إطار داخل الصفحة، فسيتعين عليك استخدام حدث OnReadyStatechange والخاصية Readystate للإطار بدلا من المستند الرئيسي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top