iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0
Modern Web

自動化 End-End 測試 Nightwatch.js系列 第 13

自動化 End-End 測試 Nightwatch.js 之踩雷筆記:上傳檔案II

如果上傳檔案不想使用 preload 檔案,也不想用下載的方式,其實可以上傳檔案至 selenium grid。

截至寫這篇的時候,Nightwatch.js 其實有 v2 了,不過還是測試版,因此還是分享一下如何撰寫客製化的 command 來上傳檔案

uploadLocalFile

在測試網頁中的上傳檔案一樣是使用 setValue() 的方式,不過如果想把 local 端的檔案上傳上去,可以先透過 zip 的方式將檔案壓縮並轉成 base64 encoded 的 buffer,如此就可以用這串發一個 http request 給遠端的 selenium grid.

const AdmZip = require('adm-zip');

const zip = new AdmZip();
zip.addLocalFile(filePath);
const file = zip.toBuffer().toString('base64');

try {
    var returnValue = await this.httpRequest({
      path: '/session/:sessionId/file',
      sessionId: this.api.sessionId,
      data: { file },
      method: 'POST',
    });
    } catch (err) {
    console.error('An error occurred uploading file', err);
    return {
      status: -1,
      error: err.message,
    };
}

this.
setValue(inputSelector, returnValue.value)

上一篇
自動化 End-End 測試 Nightwatch.js 之踩雷筆記:上傳檔案
下一篇
自動化 End-End 測試 Nightwatch.js 之踩雷筆記:Page Objects
系列文
自動化 End-End 測試 Nightwatch.js30

尚未有邦友留言

立即登入留言