يتم تحديد الزر بشكل صحيح باستخدام محدد CSS ، ثم يتم النقر عليه. يتم وضع علامة على الحدث على أنه تم كما يظهر في سجلات السيلينيوم ، ولكن إذا نجحت ، يجب تقديم صفحة جديدة وهو ما لا يحدث.
نفس قطعة الكود تعمل في الكروم.
إصدار WDIO: v4.0.9
العقدة: 6.2.0
اختبار WDIO
اختبار متزامن.
سيلينيوم خادم مستقل 2.53.0.jar
bhuvneshchaudhary @ bhuviMac : ambari-selenium $ ./node_modules/phantomjs/bin/phantomjs - الإصدار
2.1.1
CommonElements.clickNext();
browser.saveScreenshot('test1.jpg');
browser.pause(5000);
CommonElements.clickConfirmationOk();
browser.pause(5000);
// On Page 3
browser.saveScreenshot('test.jpg');
CommonElements.clickComplete();
في مقتطف الشفرة أعلاه
clickNext () يفتح نافذة منبثقة تحتوي على زرين إلغاء و موافق.
clickConfirmationOk () يجب النقر فوق الزر Ok والانتقال إلى الصفحة التالية
clickComplete () يشير إلى اكتمال الصفحة الجديدة.
ومع ذلك ، فإن clickConfirmationOk () ناجح وفقًا للسجلات وينتقل إلى النقر فوق CompleteComplete (). ومع ذلك ، فإنه يستمر في انتظار وجود العنصر ، لكنه لا يظهر أبدًا كما هو في الواقع لا يزال موجودًا في البوب الذي يظهر Ok و Cancel.
محدد CSS المستخدم لتحديد الزر صحيح ، كما تم التحقق منه بواسطة getHTML وأدوات محددات css الأخرى عبر الإنترنت.
مقتطف الرمز
clickConfirmationOk: {
value: function () {
var okSelector = '.modal-footer .btn.btn-success';
browser.waitForExist(okSelector);
console.log(browser.getHTML(okSelector));
browser.waitForEnabled(okSelector, 100000);
browser.click(okSelector);
}
},
clickComplete: {
value: function () {
var completeSelector = '#common-progress-page .btn.btn-success.pull-right';
browser.waitForExist(completeSelector);
console.log(browser.isEnabled(completeSelector));
browser.waitForEnabled(completeSelector, 900000);
browser.click(completeSelector);
}
}
سجلات السيلينيوم https://gist.github.com/bhuvnesh2703/aec82bea06debf92f9a4f6e4da93c2ea :
مخرجات نتائج الاختبار: https://gist.github.com/bhuvnesh2703/076af36f5931c8fdae4a81db612bf4b7
@ bhuvnesh2703 هل يحدث هذا لك في كل مرة أم في بعض الأحيان فقط؟ أرى مشكلة مماثلة حيث نستخدم Capybara find('#element').click
وأحيانًا تفشل الاختبارات. ومع ذلك ، يبدو أن استخدام find().trigger('click')
يعمل.
أتساءل ما إذا كانت هذه هي نفس المشكلة أم لا وكيفية جمع المزيد من المعلومات.
أواجه أيضًا مشكلة مماثلة ، ولكن مع القوائم المنسدلة للتمهيد. أنا قادر على فتح القائمة المنسدلة ولكن إذا حاولت استخدام عنصر في القائمة المنسدلة click
، يتم إغلاق القائمة ولكن لا يتم تشغيل معالج النقرات.
نظرًا لقدرتنا المحدودة جدًا على الصيانة ، نحتاج إلى إعطاء الأولوية لتركيز التطوير لدينا على المهام الأخرى. لذلك ، سيتم إغلاق هذه المشكلة تلقائيًا (انظر # 15395 لمزيد من التفاصيل). في المستقبل ، إذا رأينا الحاجة إلى معالجة هذه المشكلة مرة أخرى ، فسيتم إعادة فتحها. شكرا لمساهمتك!
التعليق الأكثر فائدة
أواجه أيضًا مشكلة مماثلة ، ولكن مع القوائم المنسدلة للتمهيد. أنا قادر على فتح القائمة المنسدلة ولكن إذا حاولت استخدام عنصر في القائمة المنسدلة
click
، يتم إغلاق القائمة ولكن لا يتم تشغيل معالج النقرات.