自动化 End-End 测试 Nightwatch.js 之踩雷笔记:关闭多视窗

昨天利用了 window.open 可以开启新分页或视窗,今天则是来关闭多个视窗。

Nightwatch 本身其实就有 .closeWindow() 了,不过如果我们已经开启多个视窗时,需要一个一个关掉时:

  1. 利用 windowHandles 检查目前共有哪些视窗
  2. 透过 switchWindow 切换视窗
  3. closeWindow 关闭视窗

不过避免全部都被关掉,因为会先确定视窗数,并於最後切回原本的视窗

this.windowHandles(function(result) {
    if (result.value.length && result.value.length > 1) {
      for (let i = 1; i < result.value.length; i++) {
        this
          .switchWindow(result.value[i])
          .closeWindow()
          .acceptAlert();
      }
      this.switchWindow(result.value[0]);
    }
}

如果遇到跳出警告:

https://ithelp.ithome.com.tw/upload/images/20211002/20120250fZQZaUGV8d.png

则可以使用 Nightwatch 中的 acceptAlert()/dismissAlert() 来解决。

可惜这不是可以跨浏览器使用的指令,在 Safari 中,这会被视为 unknow command

因次需要利用 Javascript 中 window.onbeforeunload 并设为 null

browser.execute('window.onbeforeunload = null');

<<:  Day20

>>:  [18] [烧瓶里的部落格] 08. 撰写测试

Youtube Reports API 教学 - 告一个段落

「鲑鱼均,因为一场鲑鱼之乱被主管称为鲑鱼世代,广义来说以年龄和脸蛋分类的话这应该算是一种 KNN 的...

DAY 4 『 RGB调色盘 - TextFieldDelegate、@IBAction 』Part3

RGB调色盘:view + slider * 3 + textfield * 3 昨天介绍了每个物件...

[Day18] POPCAT in WASM (Part 2)

好 那今天就会完成这个小专案 可能 CSS 的部份写的没有很好 ouo 读者可以自行修改 还是再放一...

16.unity介面按钮

今天来做按钮功能 一、创立UI按钮 二、撰写点击事件(方法) 接着搭配脚本,把脚本拉进去 publi...

Day19 React-Router(四)Hook获取route资讯

react-router-dom中的适用於function component的hook函式,在上一...