自动化 End-End 测试 Nightwatch.js 之踩雷笔记:Page Objects

关於 Nightwatch.js 的 Page Objects 其实 google 就可以找到很多教学,包含之前的铁人赛就有了

不过既然叫踩雷笔记,重点还是在我遇到的一些小问题。

介绍 Page Object

Page Objects 其实是可以利用 js 先针对某一个页面里面的物件先设定好它的 selector,并且加上一些 function,如此就可以在不同的测试档案中,共同呼叫这个 Page object,以降低程序码的重复使用率。

nightwatchConfig

设定 page object 要放的位置

const nightwatchConfig = {
    page_objects_path: './page',
}

Page object 实例

var commands = {
  search: function({text}) {
      this.click('input')
          .setValue(input, text)
          .click('button')
  }
}

Page object 里的 command 是可以使用 nightwatch 的 api,也可以使用客制化的 command

module.exports = {
  url: `https://ithelp.ithome.com.tw/`,
  commands: [commands],
  elements: {
    postBtn: {
      selector: 'button[data-target="#ir-select-series__common"]',
    },
  }
}

定义想要的 url, elements 就可以在 test file 中使用:

const dashboard = browser.page.dashboard();
dashboard.click('@postBtn')

另外也可以用客制化 command

const dashboard = browser.page.dashboard();
dashboard.clickDiv('@postBtn')

也可以串接:

const dashboard = browser.page.dashboard();
dashboard
    .clickDiv('@postBtn')
    .search({text: 'Hi'})

雷点

Page object 是不能用 url/refresh/windowHandles 的XD

因此像这样都是不行的喔~

const dashboard = browser.page.dashboard();
dashboard.url('www.google.com')
dashboard.refresh()
dashboard.windowHandles(function(result) {
      // Do something
    })

<<:  Windows Event探索练习--开关机和Office的大小事件

>>:  Day14:【TypeScript 学起来】Interfaces(介面) 笔记整理

Day20 - 提开发者体验 (DX),使用 path alias

前言 今天我想来点轻松的议题,是一个大家在开发专案时都会遇到的状况。在开发时有时候资料夹结构会变得很...

Day 0xC - Debug 地狱第三天,终於逃脱了 (建立订单)

0x1 前言 从 Day 0xA 开始撞墙,撞到今天总算解出来了 几个问题请让我娓娓道来 0x2 好...

课堂笔记 - 深度学习 Deep Learning (1)

前导介绍 说到深度学习, 首先需要了解什麽是类神经网路和它的操作方法。 类神经网路,顾名思义就是仿...

予焦啦!支援 RISC-V 权限指令与暂存器

本节是以 Golang 上游 1a708bcf1d17171056a42ec1597ca8848c...

安装Jupyterhub

JupyterHub为一个提供可多人撰写的notebook的工具, 属於撰写notebook工具中的...