在测试一个网页时,时常会有需要等待的时候,可能是等待网页载入、等待 UI 显示或等待搜寻结果等
pause()
在 Nightwatch.js 中,assert/verify 都有最多等待 5 秒的机制,但如果我们需要的结果可能超过 5 秒时,就可以先利用 pause 带入时间来等待。
范例:
browser.pause(1000);
其中的参数为 ms,1000 即表示等待一秒
不过当测试的档案很多时,有些可能需要等待较久,有些则不用,每项都个别写等待秒数很不方便。
在 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()
并等待对应的结果出现。下一篇再来写关於这两个,同时也说明他们的缺点与改善方法。
>>: [Day16] swift & kotlin 实作篇!(7) Click Event 绑定
-图片来源:CSA 在云安全联盟(CSA)划分安全,信任和保证注册(STAR)计划分为三个层次: ...
前言 探索完 useState 与 useEffect ,今天就让我们回来继续介绍其他的 React...
Hello, 各位 iT邦帮忙 的粉丝们大家好~~~ 本篇是 Re: 从零开始用 Xamarin 技...
今天来在网页上显示出 MySQL资料表 的内容 1.连线到资料库,首先要新建立1个.php档(我取名...
流程控制 if...else 我自己是把它当成一种选择的概念 其实在生活中这个概念是很常见的,经常都...