<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          10分鐘快速入門UI自動(dòng)化-Puppeteer

          共 3101字,需瀏覽 7分鐘

           ·

          2022-04-18 07:58

          這次帶大家入門的是轉(zhuǎn)轉(zhuǎn)內(nèi)部實(shí)現(xiàn)UI自動(dòng)化測(cè)試的一種方案:?Puppeteer+Mocha

          目前應(yīng)用于轉(zhuǎn)轉(zhuǎn)圖書、奢侈品、商業(yè)等業(yè)務(wù)等多個(gè)Web/H5業(yè)務(wù)的線上流程監(jiān)控;

          先簡(jiǎn)單介紹一下:

          Mocha?是JavaScript的一種單元測(cè)試框架

          Puppeteer?是一個(gè) Node 庫(kù),它提供了一個(gè)高級(jí) API 來通過 DevTools 協(xié)議控制 Chromium

          相較于大家熟悉的Appium方案,通過Appium 服務(wù)器 控制已連接的手機(jī)設(shè)備 進(jìn)行UI操作

          Puppeteer+Mocha?的方案,就是在Mocha框架里 寫一些js代碼, 調(diào)用Puppeteer 啟動(dòng)一個(gè)瀏覽器并操縱它完成你的UICase的操作

          工欲善其事必先利其器,首先把所需要的工具裝好

          1. 安裝node

          • https://nodejs.org/zh-cn/download/ 下載后直接安裝
          • 配置環(huán)境變量
          • 查看版本:
          node?-v

          2. 安裝npm (node安裝時(shí)會(huì)自動(dòng)安裝npm,如果已安裝node,此步請(qǐng)忽略)

          安裝最新版本:

          npm?install?npm@latest?-g

          查看版本:

          npm?-v

          3. 安裝cnpm (npm下載包失敗,選擇cnpm安裝)

          執(zhí)行命令:

          sudo?npm?install?-g?cnpm?--registry=https://registry.npm.taobao.org?(設(shè)置淘寶鏡像)

          驗(yàn)證:

          cnpm?-v?

          4. 新建一個(gè)node工程

          npm?i?--save?express

          此時(shí)根目錄會(huì)出現(xiàn): package.json、package-lock.json 和 node_modules?文件


          安裝工程依賴 package.json增加mocha、puppeteer 版本信息

          "mocha":?"^8.3.2",
          "puppeteer":?"^1.18.0",
          然后執(zhí)行 以下命令,安裝puppeteer和mocha
          npm?install

          工具裝好了,case寫起來!!

          先小試牛刀一下,寫一個(gè)簡(jiǎn)單的demo

          創(chuàng)建一個(gè)js文件,編寫以下代碼

          const?puppeteer?=?require('puppeteer');

          async?function?test()

          {

          //?創(chuàng)建一個(gè)瀏覽器實(shí)例?Browser?對(duì)象

          ??const?browser?=?await?puppeteer.launch({

          ????args:?['--no-sandbox',?'--disable-setuid-sandbox'],?//開啟無頭

          ????headless:false,

          ????ignoreHTTPSErrors:?true,

          ??});

          //?通過瀏覽器實(shí)例?Browser?對(duì)象創(chuàng)建頁(yè)面?Page?對(duì)象

          ??const?page?=?await?browser.newPage();

          //?通過url參數(shù)打開指定的頁(yè)面

          ??await?page.goto('[https://m.zhuanzhuan.com/open/ZZBook/index.html?needHideHead=3#/book-home](https://m.zhuanzhuan.com/open/ZZBook/index.html?needHideHead=3#/book-home)');

          //?對(duì)頁(yè)面進(jìn)行截圖

          ??await?page.screenshot({path:?'homePage.png'});

          //?關(guān)閉瀏覽器

          ??await?browser.close();

          };

          module.exports?=?test

          test()

          運(yùn)行這個(gè)demo,你就完成了一次簡(jiǎn)單的UICase

          接下來就可以在demo的基礎(chǔ)上編輯自己的case

          • 第一步:獲取你要操作的元素的selector
            • 在瀏覽器頁(yè)面 按 F12 打開調(diào)試工具 或者 鼠標(biāo)右鍵菜單-點(diǎn)擊“檢查”,查看頁(yè)面控件樹
            • 選擇對(duì)應(yīng)的元素,在控件樹中-鼠標(biāo)右鍵 - 復(fù)制copy -selector
          • 第二步:根據(jù)下列對(duì)應(yīng)的puppeteer對(duì)應(yīng)的api,豐富你的uicase的操作
          //頁(yè)面返回
          page.goBack([options])

          //等待xx元素
          page.waitForSelector(selector[,?options])

          //跳轉(zhuǎn)
          page.goto(url[,?options])

          //設(shè)置cookies
          page.setCookie(...cookies)

          //觸摸點(diǎn)擊操作
          page.tap(selector)

          //鼠標(biāo)點(diǎn)擊操作
          page.click(selector[,?options])

          //Puppeteer中文手冊(cè)
          //https://zhaoqize.github.io/puppeteer-api-zh_CN/

          反復(fù)使用以上兩步,就能實(shí)現(xiàn)你自己的UICase啦

          另外分享一個(gè)小白福利Chrome插件:puppeteer recorder

          它能自動(dòng)錄制頁(yè)面上的操作,生成puppeteer 代碼

          • 訪問https://cloud.tencent.com/developer/article/1470481?下載插件
          • 安裝到Chrome拓展程序里,開啟它

          • 開啟后,在瀏覽器的右上角有一個(gè)錄像機(jī)的標(biāo)簽,點(diǎn)擊它并開始錄制,窗口顯示Recording...

          • 操作頁(yè)面執(zhí)行你的case流程,操作完成之后點(diǎn)擊錄像機(jī)圖標(biāo),停止錄制,復(fù)制生成puppeteer代碼即可

          case已經(jīng)會(huì)寫了,那么我們使用mocha測(cè)試框架將case優(yōu)美的執(zhí)行起來吧

          因?yàn)閙ocha默認(rèn)執(zhí)行test目錄下的文件,所以在test目錄下新建一個(gè)caseList.js,作為執(zhí)行文件 文件內(nèi)容格式如下:

          const?case1?=?require('../cases/demo')

          //?describe定義測(cè)試套件名稱
          describe('用例集合',function()?{

          ??before(function()?{console.log('開始執(zhí)行用例啦')});
          ??
          ??//?it定義單個(gè)測(cè)試用例
          ??it('case1',async?function()?{

          ????[//this.timeout](//this.timeout)(0);

          ????await?case1();});

          ??it('case2',async?function()?{

          ????[//this.timeout](//this.timeout)(0);

          ????await?case1();});

          ??after(function()?{console.log('用例都執(zhí)行完啦')});

          });

          Mocha同時(shí)提供了only,skip等控制用例執(zhí)行方法和鉤子函數(shù)before,after等。

          在項(xiàng)目路徑下執(zhí)行mocha命令:

          mocha?test/caseList

          就能得到一個(gè)簡(jiǎn)潔明了的測(cè)試報(bào)告了


          如果覺得這個(gè)報(bào)告太簡(jiǎn)潔明了了,那么mocha還可以生成可視化報(bào)告哦 先安裝可視化報(bào)告插件

          ?npm?install?--save-dev?mochawesome?

          再執(zhí)行

          mocha?test/caseList?--reporter?mochawesome

          就能在case執(zhí)行完之后,在mochawesome-report目錄下生成HTML的測(cè)試報(bào)告

          到這里,你就能使用puppeteer+mocha編輯自己uicase,并生成不錯(cuò)的測(cè)試報(bào)告啦

          最后

          Puppeteer、Mocha 的功能不僅僅如此

          編寫更復(fù)雜的場(chǎng)景case、實(shí)現(xiàn)提效小工具、遠(yuǎn)程自動(dòng)執(zhí)行監(jiān)控,都能完成,大家一起學(xué)起來,玩起來吧~

          end


          瀏覽 51
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  依人大香蕉视频网站 | 91人妻人人澡人人爽人人精品乱 | 精品无码久久久久久久久不卡 | 操精品| 91一级尤物视频 |