سؤال

أنا أستخدم 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;

في الاختبار الذي أجريته، انتظرت حتى يتم تحميل الصفحة بالكامل قبل تنفيذ الوظيفة المذكورة أعلاه.

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