自动化 End-End 测试 Nightwatch.js 之踩雷笔记:等待时间

在测试一个网页时,时常会有需要等待的时候,可能是等待网页载入、等待 UI 显示或等待搜寻结果等

pause()

在 Nightwatch.js 中,assert/verify 都有最多等待 5 秒的机制,但如果我们需要的结果可能超过 5 秒时,就可以先利用 pause 带入时间来等待。

范例:

browser.pause(1000);

其中的参数为 ms,1000 即表示等待一秒

不过当测试的档案很多时,有些可能需要等待较久,有些则不用,每项都个别写等待秒数很不方便。

Globals

在 nightwatch 设定档中,可以透过 nightwatchConfig 决定 globals 放置的位置,并管理全域变数。

// nightwatch.conf.js

const nightwatchConfig = {
    "globals": {
        "myGlobalVar" : "some value",
        "otherGlobal" : "some other value"
    }
}

当然,也可以移到另一个 js 档案管理

// nightwatch.conf.js

const GLOBALS_PATH = path.join(process.cwd(), './globals.js');

const nightwatchConfig = {
    globals_path: GLOBALS_PATH,
}
// global.js

module.exports = {
    "myGlobalVar" : "some value",
    "otherGlobal" : "some other value"
}

pauseLogin(), pauseSearch()

接着就可以撰写客制化指令,带入 global variable 使 pause 变得更通用:

// global.js

module.exports = {
    "LoginTime" : "5000",
    "SearchTime" : "15000"
}
// pauseLogin.js

module.exports = {
  command: async function(type) {
  const { LoginTime } = this.globals;
      this.pause(LoginTime)
  }
}
// pauseSearch.js

module.exports = {
  command: async function(type) {
  const { LoginSearch } = this.globals;
      this.pause(LoginSearch)
  }
}

如此一来,撰写测试档案便能够过 browser.pauseLogin() 更能清楚知道为什麽需要等待以及正在做什麽动作。

总结

这篇大致说明了 pause() 的功用,不过实际上在测试时并不好用,如果只在相同机器、相同 server 或许够用,但如果测试环境有分 develop 的环境、pre-production 环境等,可能因为环境不同,造成等待时间不够并导致失败。

比较好的做法是利用 waitForElementPresent(), waitForElementVisible() 并等待对应的结果出现。下一篇再来写关於这两个,同时也说明他们的缺点与改善方法。


<<:  Day24 斜线糖果文字

>>:  [Day16] swift & kotlin 实作篇!(7) Click Event 绑定

云安全联盟(CSA)-安全信任和保证注册(STAR)

-图片来源:CSA 在云安全联盟(CSA)划分安全,信任和保证注册(STAR)计划分为三个层次: ...

Re: 新手让网页 act 起来: Day18 - React Hooks 之 useRef

前言 探索完 useState 与 useEffect ,今天就让我们回来继续介绍其他的 React...

EP 1: Create empty Xamarin.Forms project for TopStore App

Hello, 各位 iT邦帮忙 的粉丝们大家好~~~ 本篇是 Re: 从零开始用 Xamarin 技...

第08天 - PHP 列印出MySQL资料表的内容

今天来在网页上显示出 MySQL资料表 的内容 1.连线到资料库,首先要新建立1个.php档(我取名...

python的基本语法-1

流程控制 if...else 我自己是把它当成一种选择的概念 其实在生活中这个概念是很常见的,经常都...