摘要:目前已經成為了非常流行的的庫,被廣泛用于爬蟲或測試。然而,的幾乎所有的都是異步的,它返回的是一個。而提供了一系列的,使得測試變得簡單方便,測試同樣沒有問題。更多的可以參考的文檔鏈接在下方。
目前 puppeteer 已經成為了非常流行的 Node.js 的庫,被廣泛用于爬蟲或 UI 測試。
我也很歡喜 puppeteer 這個庫。然而,puppeteer 的幾乎所有的 API 都是異步的,它返回的是一個 Promise。
這就導致整個代碼有點啰嗦,下面是官方的例子:
const puppeteer = require("puppeteer") void (async () => { const browser = await puppeteer.launch() const page = await browser.newPage() await page.goto("http://example.com") await page.screenshot({ path: "example.png" }) await browser.close() })()
如您所見,一堆的 await 關鍵字使得代碼不太優雅。為了要使用 async/await,您必須將代碼放入一個立即執行函數(IIFE)里。
為此,我受到了 Laravel Dusk 的啟發,寫了 Rize 這個庫。
上面的例子如果用 Rize 重寫,將會是這個樣子:
const Rize = require("rize") const rize = new Rize() rize .goto("http://example.com") .saveScreenshot("example.png") .end()
代碼簡單得多了。另外,鏈式的 API 調用也是代碼變得優雅。
除了提供基本的操作(如頁面導航、對 DOM 操作、與表單進行交互),Rize 這個庫還提供了一些斷言方法。
為什么呢?因為我們經常利用 puppeteer 來進行 UI 測試。而 Rize 提供了一系列的 assertions,使得 UI 測試變得簡單、方便,E2E 測試同樣沒有問題。
例如,您可以斷言當前頁面的 URL:
const rize = new Rize() rize.assertUrlIs("http://example.com")
又或者斷言指定的文本是否存在于頁面上:
const rize = new Rize() rize.assertSee("Some text")
還可以為 DOM 斷言:
const rize = new Rize() rize.assertClassHas("div", "my-class")
上面這個函數可以斷言指定的元素上是否存在指定的類名。更多的 API 可以參考 Rize 的文檔(鏈接在下方)。
Rize 庫的 GitHub 倉庫:https://github.com/g-plane/rize (歡迎 star)
Rize 庫的文檔教程:https://rize.js.org/
Rize 庫所有的 API 參考:https://rize.js.org/api/classes/_index_.rize.html
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93181.html
摘要:目前已經成為了非常流行的的庫,被廣泛用于爬蟲或測試。然而,的幾乎所有的都是異步的,它返回的是一個。而提供了一系列的,使得測試變得簡單方便,測試同樣沒有問題。更多的可以參考的文檔鏈接在下方。 目前 puppeteer 已經成為了非常流行的 Node.js 的庫,被廣泛用于爬蟲或 UI 測試。 我也很歡喜 puppeteer 這個庫。然而,puppeteer 的幾乎所有的 API 都是異步...
摘要:約定我們假定要被測試的頁面是這樣的標題開始編寫測試首先是導入。我們推薦使用的語法當然您也可以用方式第一件事是構造一個實例然后要轉到要被測試的頁面。 之前我曾經在《Rize - 一個可以讓你簡單、優雅地使用 puppeteer 的 Node.js 庫》一文簡單介紹過 Rize 這個庫。當時僅僅是介紹這個庫本身,關于如何使用,我沒有給太多的指導。 這篇文章講的是如何使用 Rize 來做 U...
摘要:約定我們假定要被測試的頁面是這樣的標題開始編寫測試首先是導入。我們推薦使用的語法當然您也可以用方式第一件事是構造一個實例然后要轉到要被測試的頁面。 之前我曾經在《Rize - 一個可以讓你簡單、優雅地使用 puppeteer 的 Node.js 庫》一文簡單介紹過 Rize 這個庫。當時僅僅是介紹這個庫本身,關于如何使用,我沒有給太多的指導。 這篇文章講的是如何使用 Rize 來做 U...
摘要:約定我們假定要被測試的頁面是這樣的標題開始編寫測試首先是導入。我們推薦使用的語法當然您也可以用方式第一件事是構造一個實例然后要轉到要被測試的頁面。 之前我曾經在《Rize - 一個可以讓你簡單、優雅地使用 puppeteer 的 Node.js 庫》一文簡單介紹過 Rize 這個庫。當時僅僅是介紹這個庫本身,關于如何使用,我沒有給太多的指導。 這篇文章講的是如何使用 Rize 來做 U...
摘要:現狀最近在寫歡迎的時候,一直為錯誤的棧追蹤而愁。由于送入隊列的是函數,因此在的參數可以放心地使用。其次,這些函數并不是立即在中調用的,而是由專門的隊列處理代碼來調用。 本文的講述都是以 Node.js 環境為例子,而 Node.js 使用的 JavaScript 引擎是 V8,因此理論上 Chrome 也能適用,其它瀏覽器我就不清楚了。 現狀 最近在寫 Rize(歡迎 star) 的時...
閱讀 2104·2023-05-11 16:55
閱讀 3504·2021-08-10 09:43
閱讀 2618·2019-08-30 15:44
閱讀 2440·2019-08-29 16:39
閱讀 583·2019-08-29 13:46
閱讀 2005·2019-08-29 13:29
閱讀 921·2019-08-29 13:05
閱讀 691·2019-08-26 13:51