NightwatchJS .waitForElementPresent abortOnFailure لا يعمل
-
21-12-2019 - |
سؤال
أنا أستخدم NightwatchJS مع NodeJS: http://nightwatchjs.org/api
لدي مربع حوار مشروط، والذي قد يظهر أو لا يظهر.لديها #close_button
الذي يجب النقر عليه (إذا ظهر النموذج) للمتابعة.
قمت بتعيين abortOnFailure
معلمة waitForElementPresent
ل false
لذلك يستمر البرنامج النصي إذا لم يظهر الشكل.ومع ذلك لا أستطيع الحصول عليه للعمل.
أي اقتراحات؟
module.exports = {
"Test" : function (browser) {
browser
.url("http://domain.com/")
.waitForElementPresent('#close_button', 5000, false, function() {
this.click('#close_button')
})
.setValue('#username', 'test@email.com')
//more code here
.end(); //does end() go here or inside .waitForElementPresent() above?
}
}
المحلول
abortOnFailure
يعمل بشكل جيد، ولكن waitForElementPresent
يحتوي على خطأ الآن حيث لم يتم استدعاء رد الاتصال الذي مررته في السياق الصحيح.سيتم إصلاح ذلك.
في هذه الأثناء، يمكنك كتابة الاختبار الخاص بك مثل هذا، مع وضع click
من الخارج، وهو نفس الشيء ويبدو أنظف:
module.exports = {
"Test" : function (browser) {
browser
.url("http://domain.com/")
.waitForElementPresent('#close_button', 5000, false)
.click('#close_button')
.setValue('#username', 'test@email.com')
//more code here
.end(); // end() goes here
}
}
نصائح أخرى
لقد واجهت شيئًا مشابهًا، كنت أنتظر وجود إطار iframe.لقد قمت بإنشاء وظيفة لإغلاقها فعليًا:
وظيفة كائن الصفحة:
Home.prototype.closeIframe = function(browser) {
var self = this;
console.log('Checking for iframe');
this.browser
.isVisible(iframeSelectors.iframe, function(result) {
if (result.value === true) {
self.browser
.log('iframe visible')
.frame(iframeSelectors.name)
.waitForElementVisible(iframeSelectors.closeLink)
.click(iframeSelectors.closeLink)
.assert.elementNotPresent(iframeSelectors.iframe)
.frame(null)
.pause(2000); //allow for proper frame switching
} else {
console.log('iframe is not visible');
}
});
return this;
في الاختبار الذي أجريته، انتظرت حتى يتم تحميل الصفحة بالكامل قبل تنفيذ الوظيفة المذكورة أعلاه.