摘要:今天接著介紹看過(guò)上篇的同學(xué),應(yīng)該都會(huì)用的高級(jí)爬蟲(chóng)功能了,附上姐妹篇鏈接除了爬蟲(chóng)之外,也可以幫你完成一些頁(yè)面上的重復(fù)操作,也可以當(dāng)作自動(dòng)化測(cè)試開(kāi)門(mén)見(jiàn)山,今天的目標(biāo)是,爬取頭條前端的文章,自動(dòng)推薦到掘金廢話不多說(shuō),直接上動(dòng)圖看效果圖很大,請(qǐng)稍等
今天接著介紹Puppeteer
廢話不多說(shuō),直接上動(dòng)圖看效果(圖很大,請(qǐng)稍等)看過(guò)上篇的同學(xué),應(yīng)該都會(huì)用Puppeteer的高級(jí)爬蟲(chóng)功能了,附上姐妹篇鏈接:https://segmentfault.com/a/11...
除了爬蟲(chóng)之外,Puppeteer也可以幫你完成一些頁(yè)面上的重復(fù)操作,也可以當(dāng)作UI自動(dòng)化測(cè)試!
開(kāi)門(mén)見(jiàn)山,今天的目標(biāo)是,爬取SF頭條前端的文章,自動(dòng)推薦到掘金!!!
github:https://github.com/zhentaoo/p...
SF可能比較慢,直接看github圖片地址,錄制了視頻,但是沒(méi)發(fā)現(xiàn)比較好的工具:https://raw.githubusercontent...
下面就來(lái)介紹具體流程 1. 到sf獲取最新的前端文章page.goto跳轉(zhuǎn)到https://segmentfault.com/news...
接著分析文章的Dom結(jié)構(gòu),獲取每篇文章的鏈接
然后取出最重要的 href,title 信息
具體代碼如下:
try { await page.goto("https://segmentfault.com/news/frontend") await timeout(1000) var SfFeArticleList = await page.evaluate(() => { var list = [...document.querySelectorAll(".news__list .news__item-title a")] return list.map(el => { return {href: el.href.trim(), title: el.innerText} }) }) console.log("SfFeArticleList:", SfFeArticleList); await page.screenshot({path: "./sf-juejin/sf.png", type: "png"}); } catch (e) { console.log("sf err:", e); }2. 到掘金并登錄,這里我事先注冊(cè)了個(gè)測(cè)試賬號(hào)
先跳轉(zhuǎn)到掘金,一樣分析頁(yè)面結(jié)構(gòu),模擬點(diǎn)擊登錄按鈕
接著,會(huì)彈出一個(gè)的登錄dialog,用page.type模擬輸入用戶(hù)名密碼
最后,點(diǎn)擊登錄,這時(shí)JJ應(yīng)該把cookie寫(xiě)好了....
代碼如下:
try { await timeout(1000) await page.goto("https://juejin.im") await timeout(1000) var login = await page.$(".login") await login.click() var loginPhoneOrEmail = await page.$("[name=loginPhoneOrEmail]") console.log("loginPhoneOrEmail:", loginPhoneOrEmail); await loginPhoneOrEmail.click() await page.type("18516697699@163.com", {delay: 20}) var password = await page.$("[placeholder=請(qǐng)輸入密碼]") console.log("password:", password); await password.click() await page.type("123456", {delay: 20}) var authLogin = await page.$(".panel .btn") console.log("authLogin:", authLogin); await authLogin.click() } catch (e) {}3. 隨機(jī)從SF拿到的文章推薦到掘金
登錄成功后,會(huì)進(jìn)入用戶(hù)界面
模擬點(diǎn)擊推薦文章推薦按鈕“+”
?,這時(shí)從SF拿到的文章信息就派上用場(chǎng)了,隨機(jī)取出一篇
模擬填寫(xiě)推薦表單,然后點(diǎn)擊發(fā)布
嗯,有時(shí)會(huì)提示該文章已被分享,那就換一篇吧,再執(zhí)行一次。
代碼如下
try { await timeout(2500) var seed = Math.floor(Math.random() * 30) var theArtile = SfFeArticleList[seed] var add = await page.$(".main-nav .ion-android-add") await add.click() await timeout(2500) var shareUrl = await page.$(".entry-form-input .url-input") await shareUrl.click() await page.type(theArtile.href, {delay: 20}) await page.press("Tab") await page.type(theArtile.title, {delay: 20}) await page.press("Tab") await page.type(theArtile.title, {delay: 20}) await page.evaluate(() => { let li = [...document.querySelectorAll(".category-list-box .category-list .item")] li.forEach(el => { if (el.innerText == "前端") el.click() }) }) var submitBtn = await page.$(".submit-btn") await submitBtn.click() } catch (e) { await page.screenshot({path: "./sf-juejin/err.png", type: "png"}); }4. 項(xiàng)目運(yùn)行
git clone https://github.com/zhentaoo/p...
npm install (puppeteer在win下100+M、mac下70+M,請(qǐng)耐心等候)
npm test
結(jié)語(yǔ)為了效果展示,這里使用的headless: false模式,實(shí)際使用時(shí)可以同時(shí)開(kāi)n個(gè)page,模擬操作,大家可以嘗試改改,也可以給我提PR
目前已經(jīng)帶領(lǐng)大家,使用Puppeteer完成爬蟲(chóng) 和 UI自動(dòng)化測(cè)試,接下來(lái)可能會(huì)出第三篇,應(yīng)該會(huì)是關(guān)于前端性能分析
其實(shí)Puppeteer的應(yīng)用場(chǎng)景遠(yuǎn)不止這些,大家也可以使用它在各自的領(lǐng)域大放異彩!!!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/84836.html
摘要:本文將介紹如何使用和抓取主流的技術(shù)博客文章,然后用搭建一個(gè)小型的技術(shù)文章聚合平臺(tái)。是谷歌開(kāi)源的基于和的自動(dòng)化測(cè)試工具,可以很方便的讓程序模擬用戶(hù)的操作,對(duì)瀏覽器進(jìn)行程序化控制。相對(duì)于,是新的開(kāi)源項(xiàng)目,而且是谷歌開(kāi)發(fā),可以使用很多新的特性。 背景 說(shuō)到爬蟲(chóng),大多數(shù)程序員想到的是scrapy這樣受人歡迎的框架。scrapy的確不錯(cuò),而且有很強(qiáng)大的生態(tài)圈,有g(shù)erapy等優(yōu)秀的可視化界面。但...
摘要:本文將介紹如何使用和抓取主流的技術(shù)博客文章,然后用搭建一個(gè)小型的技術(shù)文章聚合平臺(tái)。是谷歌開(kāi)源的基于和的自動(dòng)化測(cè)試工具,可以很方便的讓程序模擬用戶(hù)的操作,對(duì)瀏覽器進(jìn)行程序化控制。相對(duì)于,是新的開(kāi)源項(xiàng)目,而且是谷歌開(kāi)發(fā),可以使用很多新的特性。 背景 說(shuō)到爬蟲(chóng),大多數(shù)程序員想到的是scrapy這樣受人歡迎的框架。scrapy的確不錯(cuò),而且有很強(qiáng)大的生態(tài)圈,有g(shù)erapy等優(yōu)秀的可視化界面。但...
摘要:地址前端詞典提高幸福感的個(gè)技巧推薦文章介紹了個(gè)更加簡(jiǎn)潔優(yōu)雅的使用技巧。這些技巧確實(shí)在實(shí)際開(kāi)發(fā)中十分常用,作者總結(jié)的很好,特別是針對(duì)降級(jí)問(wèn)題又學(xué)到了一個(gè)新思路。值得奮戰(zhàn)在一線的攻城獅們閱讀學(xué)習(xí)。Ladies and 鄉(xiāng)親們,摩拜前端周刊起航啦~ 摩拜前端團(tuán)隊(duì)會(huì)收集每周前端優(yōu)秀文章,每周五發(fā)布至掘金平臺(tái),歡迎關(guān)注我們~ 過(guò)個(gè)沒(méi)什么了不起的一天,耀眼一些,你有資格 Top 榜 「中高級(jí)前端」...
摘要:視覺(jué)感知測(cè)試視覺(jué)回歸測(cè)試為了解決上面提到的各種問(wèn)題,視覺(jué)感知測(cè)試孕育而生。第三種方式,無(wú)法進(jìn)行視覺(jué)感知測(cè)試結(jié)果只能進(jìn)行視覺(jué)回歸測(cè)試和上一版的繼續(xù)比較差異。 前端自動(dòng)化測(cè)試 之 視覺(jué)測(cè)試 showImg(https://segmentfault.com/img/remote/1460000014720180); 前端測(cè)試分類(lèi) showImg(https://segmentfault.co...
閱讀 2717·2021-11-25 09:43
閱讀 2098·2021-11-24 09:39
閱讀 1994·2021-11-17 09:33
閱讀 2765·2021-09-27 14:11
閱讀 1880·2019-08-30 15:54
閱讀 3238·2019-08-26 18:27
閱讀 1273·2019-08-23 18:00
閱讀 1822·2019-08-23 17:53