自动化 End-End 测试 Nightwatch.js 之踩雷笔记:等待物件II

前篇提到可以利用 waitForElementVisible() 去等待一个物件的 display 变成 nonehidden

<div id="status" style="display: none;">
    <div class="text">载入中</div>
</div>

测试:

this.waitForElementNotPresent('#status', 60000);

// Element <#status> was not present after 4004 milliseconds.

不过如果测试环境使用的是 Safari:

Error while running .isElementDisplayed() protocol action: The command 'GET /session/ID/element/ID/displayed' was not found.

这是因为 Safari 的 WebDriver 并没有 displayed 这个 endpoint。

解法

  1. 直接修改前端
    移除透过修改 display 的部分,直接把 element 移除比较简单XD

  2. 撰写客制化指令
    利用 getCssProperty() 更新该 element 的 display

module.exports = {
  command: async function() {
    let currentStatus = '';
    while (currentStatus !== 'none')
      this.getCssProperty('#status', 'display', result => {
        currentStatus = result.value;
        this.pause(500);
      });
  },
};

<<:  [D11] placeholder for d11

>>:  Day 22 - 新的一年离职同事的惊喜专案包(上)

npm
杂谈    

TCB存取控制

.任意访问控制(DAC)依赖於所有者(通常基於身份)自行决定是否进行授权。 .基於角色的访问控制(...

2021 春季 JS 直播班心得

前言 去年忙结婚的事情一度暂停学习及更新文章 忙完结婚事以後刚好六角学院也开了很适合新手的JS直播...

Day 14 : 笔记篇 01 — 了解 Obsidian 的 Metadata,建立一套可持续迭代的笔记系统

前言 Day 1 ~ Day 13 讲了 Obsidian 的基础操作、笔记理论後,接下来我要分享如...

日月千禧酒店 Soluna - All Day Dining 飨乐全日餐厅 - 午餐 Buffet at Millennium Hotel Taichung

我还是对日月千禧恢复供应「龙虾吃到饱」充满着期待... 第一次走进日月千禧,已经是好几年前的事情了,...

Day 03 - Curry

yo, what's up? 今天要来介绍 Functional Programming 重要的概念...