成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Rize - 一個可以讓你簡單、優(yōu)雅的使用 puppeteer 的 Node.js 庫

AZmake / 3580人閱讀

摘要:目前已經(jīng)成為了非常流行的的庫,被廣泛用于爬蟲或測試。然而,的幾乎所有的都是異步的,它返回的是一個。而提供了一系列的,使得測試變得簡單方便,測試同樣沒有問題。更多的可以參考的文檔鏈接在下方。

目前 puppeteer 已經(jīng)成為了非常流行的 Node.js 的庫,被廣泛用于爬蟲或 UI 測試。

我也很歡喜 puppeteer 這個庫。然而,puppeteer 的幾乎所有的 API 都是異步的,它返回的是一個 Promise。

這就導(dǎo)致整個代碼有點(diǎn)啰嗦,下面是官方的例子:

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 關(guān)鍵字使得代碼不太優(yōu)雅。為了要使用 async/await,您必須將代碼放入一個立即執(zhí)行函數(shù)(IIFE)里。

為此,我受到了 Laravel Dusk 的啟發(fā),寫了 Rize 這個庫。

上面的例子如果用 Rize 重寫,將會是這個樣子:

const Rize = require("rize")

const rize = new Rize()
rize
  .goto("http://example.com")
  .saveScreenshot("example.png")
  .end()

代碼簡單得多了。另外,鏈?zhǔn)降?API 調(diào)用也是代碼變得優(yōu)雅。

除了提供基本的操作(如頁面導(dǎo)航、對 DOM 操作、與表單進(jìn)行交互),Rize 這個庫還提供了一些斷言方法。

為什么呢?因?yàn)槲覀兘?jīng)常利用 puppeteer 來進(jìn)行 UI 測試。而 Rize 提供了一系列的 assertions,使得 UI 測試變得簡單、方便,E2E 測試同樣沒有問題。

例如,您可以斷言當(dāng)前頁面的 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")

上面這個函數(shù)可以斷言指定的元素上是否存在指定的類名。更多的 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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/8800.html

相關(guān)文章

  • Rize - 一個可以讓你簡單、優(yōu)雅使用 puppeteer Node.js

    摘要:目前已經(jīng)成為了非常流行的的庫,被廣泛用于爬蟲或測試。然而,的幾乎所有的都是異步的,它返回的是一個。而提供了一系列的,使得測試變得簡單方便,測試同樣沒有問題。更多的可以參考的文檔鏈接在下方。 目前 puppeteer 已經(jīng)成為了非常流行的 Node.js 的庫,被廣泛用于爬蟲或 UI 測試。 我也很歡喜 puppeteer 這個庫。然而,puppeteer 的幾乎所有的 API 都是異步...

    JeOam 評論0 收藏0
  • 利用 Rize 來進(jìn)行 UI 測試或 E2E 測試

    摘要:約定我們假定要被測試的頁面是這樣的標(biāo)題開始編寫測試首先是導(dǎo)入。我們推薦使用的語法當(dāng)然您也可以用方式第一件事是構(gòu)造一個實(shí)例然后要轉(zhuǎn)到要被測試的頁面。 之前我曾經(jīng)在《Rize - 一個可以讓你簡單、優(yōu)雅地使用 puppeteer 的 Node.js 庫》一文簡單介紹過 Rize 這個庫。當(dāng)時僅僅是介紹這個庫本身,關(guān)于如何使用,我沒有給太多的指導(dǎo)。 這篇文章講的是如何使用 Rize 來做 U...

    Coding01 評論0 收藏0
  • 利用 Rize 來進(jìn)行 UI 測試或 E2E 測試

    摘要:約定我們假定要被測試的頁面是這樣的標(biāo)題開始編寫測試首先是導(dǎo)入。我們推薦使用的語法當(dāng)然您也可以用方式第一件事是構(gòu)造一個實(shí)例然后要轉(zhuǎn)到要被測試的頁面。 之前我曾經(jīng)在《Rize - 一個可以讓你簡單、優(yōu)雅地使用 puppeteer 的 Node.js 庫》一文簡單介紹過 Rize 這個庫。當(dāng)時僅僅是介紹這個庫本身,關(guān)于如何使用,我沒有給太多的指導(dǎo)。 這篇文章講的是如何使用 Rize 來做 U...

    yimo 評論0 收藏0
  • 利用 Rize 來進(jìn)行 UI 測試或 E2E 測試

    摘要:約定我們假定要被測試的頁面是這樣的標(biāo)題開始編寫測試首先是導(dǎo)入。我們推薦使用的語法當(dāng)然您也可以用方式第一件事是構(gòu)造一個實(shí)例然后要轉(zhuǎn)到要被測試的頁面。 之前我曾經(jīng)在《Rize - 一個可以讓你簡單、優(yōu)雅地使用 puppeteer 的 Node.js 庫》一文簡單介紹過 Rize 這個庫。當(dāng)時僅僅是介紹這個庫本身,關(guān)于如何使用,我沒有給太多的指導(dǎo)。 這篇文章講的是如何使用 Rize 來做 U...

    Lin_R 評論0 收藏0
  • V8 Error 對象與棧追蹤妙用

    摘要:現(xiàn)狀最近在寫歡迎的時候,一直為錯誤的棧追蹤而愁。由于送入隊(duì)列的是函數(shù),因此在的參數(shù)可以放心地使用。其次,這些函數(shù)并不是立即在中調(diào)用的,而是由專門的隊(duì)列處理代碼來調(diào)用。 本文的講述都是以 Node.js 環(huán)境為例子,而 Node.js 使用的 JavaScript 引擎是 V8,因此理論上 Chrome 也能適用,其它瀏覽器我就不清楚了。 現(xiàn)狀 最近在寫 Rize(歡迎 star) 的時...

    Luosunce 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<