سؤال

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

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

المحلول

هل يمكن إرسال بريد تمديد المستخدم (أو فقط بعض جافا سكريبت في storeEval الخ) ان الاختبارات التي تم تعيينها window.onbeforeunload، ومن ثم يستبدلها مع اغية قبل أن يسافرا من الصفحة. قبيحة، ولكن يجب أن تحصل خارج الصفحة.

نصائح أخرى

ولقد كان فقط للقيام بذلك لطلب لي حيث معالج onbeforeunload إحضار موجه إذا كان المستخدم يترك صفحة في حين أن الوثيقة في حالة لم يتم حفظها. كود بايثون:

driver.switch_to.alert.accept()

وأي ما يعادل جافا ستكون كما يلي:

driver.switchTo().alert().accept();

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

وأنا على التوالي السيلينيوم 2.43.0 لكن أعتقد كانت هذه قابلة للتنفيذ لبعض الوقت الآن.

في الحالات التي لا أريد موجه قادمة على الإطلاق لأن هذا ليس ما أنا اختبار، وتشغيل مخصص جافا سكريبت في المتصفح لتحديد window.onbeforeunload إلى null قبل مغادرة الصفحة. أضع هذا في رمز اختبار تنظيف.

تحذير: هذا يعطي حل بديل

وWatij - http://watij.com/ - يمكن أن تساعد هنا. أو إذا كنت مرتاحا مع روبي، watir يمكن أن تساعد - http://wtr.rubyforge.org/ install.html

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

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