簡體   English   中英

如何在CodeceptJS和NightmareJS中將條件應用於E2E測試

[英]How to apply a conditional to an E2E Test in CodeceptJS and NightmareJS

我需要的:

在CodeceptJS中以Nightmare作為主要助手進行E2E測試,以驗證元素的存在,並根據結果繼續執行一系列操作或其他操作。

示例代碼:

class EventsHelper extends Helper {

  isExistsElement(selector) {
    let browser = this.helpers['Nightmare'].browser;
    return browser.evaluate((selector) => {
      return new Promise(resolve => {
        let element = document.querySelector(selector);
        resolve(element || false);
      });
    }, selector);
  }
}
module.exports = EventsHelper;

Scenario('Test 1', async (I) => {
  const isButtonRendered = await I.isExistsElement('#button');

  if (isButtonRendered) {
    I.see('Message that is displayed only if the button exists.');
    I.click('#button');
  } else {
    I.see('Alternative message that appears if this button does not exist.');
  }
});

該示例代碼的當前結果是: -如果按鈕存在。

Evaluation timed out after 30000msec.  Are you calling done() or resolving your promises?
  • 否則,該按鈕不存在:通過。

我願意提出解決問題的建議,更正或其他想法。 謝謝你們! (如果我的英語不太清楚,請原諒)。

根據codeceptjs開發人員,您必須為條件本身使用自定義幫助程序,因為它們不支持主要scennario函數內部的條件。

這是一個自定義幫助程序示例:

'use strict';
import assert from 'assert';

let Helper = codecept_helper;

class MyHelper extends Helper {
  async clickIfVisible(selector, ...options) {
    const helper = this.helpers['Puppeteer'];
    try {
      const numVisible = await helper.grabNumberOfVisibleElements(selector);

      if (numVisible) {
        return helper.click(selector, ...options);
      }
    } catch (err) {
      console.log('Skipping operation as element is not visible');
    }
  }
}

module.exports = MyHelper;

更多信息: https : //github.com/Codeception/CodeceptJS/issues/648

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM